File size: 2,488 Bytes
7516245
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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()
    
    # Launch the web UI if requested
    if args.ui:
        print("Launching web UI...")
        launch_ui()
        return
    
    # Otherwise, run the CLI version
    try:
        # Get API keys if not provided
        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: ")
        
        # Display the workflow graph
        print("Generating AI News Blog...")
        
        # Generate the blog
        blog_content = generate_ai_news_blog(groq_key, tavily_key, args.date)
        
        # Save to file if output path provided
        if args.output:
            with open(args.output, "w") as f:
                f.write(blog_content)
            print(f"Blog saved to {args.output}")
        else:
            # Otherwise, save to default file
            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 to display the blog if running in a notebook
        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()