File size: 1,553 Bytes
33253b5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from crew import NewsletterGenCrew
import os
import gradio as gr
from datetime import datetime

def load_html_template(): 
    with open('config/newsletter_template.html', 'r') as file:
        html_template = file.read()
    return html_template

def generate_newsletter(topic: str, personal_message: str):
    yield "🛠️ Generating newsletter... please wait.", None

    inputs = {
        'topic': topic,
        'personal_message': personal_message,
        'html_template': load_html_template()
    }

    crew_instance = NewsletterGenCrew()
    crew = crew_instance.crew()
    crew.kickoff(inputs=inputs)

    newsletter_task = crew_instance.newsletter_task()
    output_html = newsletter_task.output.raw

    yield "✅ Newsletter ready!", output_html
    
with gr.Blocks() as demo:
    gr.Markdown("## ✨ AI-Powered Newsletter Generator")
    gr.Markdown("Enter your topic and personal message below, then click **Submit** to generate your newsletter.")

    with gr.Row():
        topic_input = gr.Textbox(label="📰 Newsletter Topic", placeholder="e.g., AI in Healthcare")
        message_input = gr.Textbox(label="✉️ Personal Message", placeholder="e.g., Here's a weekly digest...", lines=2)

    submit_btn = gr.Button("🚀 Submit")
    html_output = gr.HTML(label="🧾 Your Newsletter")
    status_box = gr.Textbox(label="🧠 Status", interactive=False)

    submit_btn.click(
        fn=generate_newsletter,
        inputs=[topic_input, message_input],
        outputs=[status_box, html_output]
    )

demo.launch()