|
import argparse |
|
from datetime import datetime |
|
import os |
|
import getpass |
|
import sys |
|
from graph import create_blog_generator_workflow |
|
from ui import display_workflow, display_blog, launch_ui |
|
from core import generate_ai_news_blog |
|
|
|
def main(): |
|
"""Main entry point for the application""" |
|
parser = argparse.ArgumentParser(description="AI News Blog Generator") |
|
parser.add_argument("--ui", action="store_true", help="Launch the web UI") |
|
parser.add_argument("--date", type=str, help="Date to search for news (YYYY-MM-DD format)") |
|
parser.add_argument("--groq-key", type=str, help="Groq API key") |
|
parser.add_argument("--tavily-key", type=str, help="Tavily API key") |
|
parser.add_argument("--output", type=str, help="Output file path") |
|
|
|
args = parser.parse_args() |
|
|
|
|
|
if args.ui: |
|
print("Launching web UI...") |
|
launch_ui() |
|
return |
|
|
|
|
|
try: |
|
|
|
groq_key = args.groq_key |
|
if not groq_key and not os.environ.get("GROQ_API_KEY"): |
|
groq_key = getpass.getpass("Enter the Groq API key: ") |
|
|
|
tavily_key = args.tavily_key |
|
if not tavily_key and not os.environ.get("TAVILY_API_KEY"): |
|
tavily_key = getpass.getpass("Enter the Tavily API key: ") |
|
|
|
|
|
print("Generating AI News Blog...") |
|
|
|
|
|
blog_content = generate_ai_news_blog(groq_key, tavily_key, args.date) |
|
|
|
|
|
if args.output: |
|
with open(args.output, "w") as f: |
|
f.write(blog_content) |
|
print(f"Blog saved to {args.output}") |
|
else: |
|
|
|
output_file = f"ai_news_blog_{datetime.now().strftime('%Y-%m-%d')}.md" |
|
with open(output_file, "w") as f: |
|
f.write(blog_content) |
|
print(f"Blog saved to {output_file}") |
|
|
|
|
|
try: |
|
display_blog(blog_content) |
|
except: |
|
print("Blog generated successfully.") |
|
|
|
except KeyboardInterrupt: |
|
print("\nOperation cancelled by user.") |
|
sys.exit(0) |
|
except Exception as e: |
|
print(f"Error running the pipeline: {str(e)}") |
|
sys.exit(1) |
|
|
|
if __name__ == "__main__": |
|
main() |