File size: 3,774 Bytes
ca2863a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
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()