Spaces:
Sleeping
Sleeping
| import os | |
| import logging | |
| import argparse | |
| from dotenv import load_dotenv | |
| try: | |
| # new OpenAI v1 client | |
| from openai import OpenAI | |
| openai_client = OpenAI() | |
| openai_legacy = None | |
| except Exception: | |
| try: | |
| import openai as openai_legacy | |
| openai_client = None | |
| except Exception: | |
| openai_client = None | |
| openai_legacy = None | |
| logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(message)s") | |
| logger = logging.getLogger(__name__) | |
| def generate_wisdom(prompt: str | None = None, max_tokens: int = 120) -> str: | |
| load_dotenv() | |
| api_key = os.getenv("OPENAI_API_KEY") | |
| if not api_key: | |
| logger.error("OPENAI_API_KEY not found in environment") | |
| raise SystemExit(1) | |
| base_prompt = ( | |
| "You are a concise Buddhist teacher. Provide a short (1-3 sentence) piece of wisdom" | |
| " suitable for a social media post. Keep it insightful, non-denominational, and respectful." | |
| ) | |
| if prompt: | |
| user_prompt = f"{base_prompt}\nTopic: {prompt}\n" | |
| else: | |
| user_prompt = base_prompt | |
| logger.info("Requesting wisdom from OpenAI (max_tokens=%s)", max_tokens) | |
| if openai_client is not None: | |
| # new OpenAI v1 client | |
| resp = openai_client.chat.completions.create( | |
| model="gpt-3.5-turbo", | |
| messages=[ | |
| {"role": "system", "content": "You generate short Buddhist wisdom quotes."}, | |
| {"role": "user", "content": user_prompt}, | |
| ], | |
| max_tokens=max_tokens, | |
| temperature=0.8, | |
| ) | |
| # response shape: resp.choices[0].message.content | |
| try: | |
| text = resp.choices[0].message.content.strip() | |
| except Exception: | |
| # fallback to dict access | |
| text = resp["choices"][0]["message"]["content"].strip() | |
| elif openai_legacy is not None: | |
| openai_legacy.api_key = api_key | |
| resp = openai_legacy.ChatCompletion.create( | |
| model="gpt-3.5-turbo", | |
| messages=[ | |
| {"role": "system", "content": "You generate short Buddhist wisdom quotes."}, | |
| {"role": "user", "content": user_prompt}, | |
| ], | |
| max_tokens=max_tokens, | |
| temperature=0.8, | |
| ) | |
| text = resp["choices"][0]["message"]["content"].strip() | |
| else: | |
| logger.error("No usable OpenAI client available (install openai package)") | |
| raise SystemExit(1) | |
| logger.info("Received wisdom: %s", text) | |
| return text | |
| def main(): | |
| parser = argparse.ArgumentParser(description="Generate short Buddhism wisdom via OpenAI") | |
| parser.add_argument("-p", "--prompt", help="Optional topic prompt") | |
| parser.add_argument("--post", action="store_true", help="Post generated wisdom to Facebook using FB_PAGE_ACCESS_TOKEN in .env") | |
| parser.add_argument("--dry-run", action="store_true", help="Print but do not post") | |
| args = parser.parse_args() | |
| wisdom = generate_wisdom(args.prompt) | |
| print("Generated wisdom:\n", wisdom) | |
| if args.post: | |
| if args.dry_run: | |
| logger.info("Dry run enabled — not posting to Facebook") | |
| return | |
| from post_to_facebook import post_to_facebook | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| page_id = os.getenv("FB_PAGE_ID") | |
| token = os.getenv("FB_PAGE_ACCESS_TOKEN") | |
| if not page_id or not token: | |
| logger.error("FB_PAGE_ID or FB_PAGE_ACCESS_TOKEN missing in environment") | |
| raise SystemExit(1) | |
| logger.info("Posting wisdom to Facebook page %s", page_id) | |
| res = post_to_facebook(page_id, token, wisdom) | |
| logger.info("Facebook response: %s", res) | |
| print("Posted. Response:", res) | |
| if __name__ == "__main__": | |
| main() | |