-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
86 lines (76 loc) · 3.11 KB
/
Copy pathmain.py
File metadata and controls
86 lines (76 loc) · 3.11 KB
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
#!/usr/bin/env python3
import argparse
import sys
import os
# Add src to path
sys.path.append(os.path.join(os.path.dirname(__file__), 'src'))
from myfeed.generator import NewsletterGenerator
from myfeed.email_sender import EmailSender
def main():
parser = argparse.ArgumentParser(description='AI-Powered Newsletter System')
parser.add_argument('command', choices=['test', 'run-once', 'config'],
help='Command to execute')
parser.add_argument('--mistral-api-key', required=True,
help='Mistral API key')
parser.add_argument('--smtp-server', default="smtp.gmail.com",
help='SMTP server (default: smtp.gmail.com)')
parser.add_argument('--smtp-port', type=int, default=587,
help='SMTP port (default: 587)')
parser.add_argument('--email-address', required=True,
help='Email address for sending')
parser.add_argument('--email-password', required=True,
help='Email password')
parser.add_argument('--to-email', required=True,
help='Recipient email address')
parser.add_argument('--topics', default="",
help='Comma-separated list of topics')
args = parser.parse_args()
# Convert topics string to list
topics_list = [topic.strip() for topic in args.topics.split(",") if topic.strip()]
if args.command == 'config':
print("Current Configuration:")
print(f"Topics: {', '.join(topics_list)}")
print(f"Email: {args.to_email}")
print(f"SMTP Server: {args.smtp_server}:{args.smtp_port}")
return
if args.command == 'test':
print("Testing email connection...")
email_sender = EmailSender(
smtp_server=args.smtp_server,
smtp_port=args.smtp_port,
email_address=args.email_address,
email_password=args.email_password,
to_email=args.to_email
)
if email_sender.test_email_connection():
print("✓ Email connection successful")
# Test newsletter generation and sending
print("Generating test newsletter...")
generator = NewsletterGenerator(
mistral_api_key=args.mistral_api_key,
email_sender=email_sender,
topics=topics_list
)
generator.run()
else:
print("✗ Email connection failed")
print("Please check your email configuration")
return
if args.command == 'run-once':
print("Generating and sending newsletter...")
email_sender = EmailSender(
smtp_server=args.smtp_server,
smtp_port=args.smtp_port,
email_address=args.email_address,
email_password=args.email_password,
to_email=args.to_email
)
generator = NewsletterGenerator(
mistral_api_key=args.mistral_api_key,
email_sender=email_sender,
topics=topics_list
)
generator.run()
return
if __name__ == "__main__":
main()