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()