JBHF commited on
Commit
516d295
·
verified ·
1 Parent(s): c5668b8

Initial commit

Browse files
Files changed (1) hide show
  1. app.py +82 -0
app.py ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from newsletter_gen.crew import NewsletterGenCrew
3
+
4
+
5
+ class NewsletterGenUI:
6
+
7
+ def load_html_template(self):
8
+ with open("src/newsletter_gen/config/newsletter_template.html", "r") as file:
9
+ html_template = file.read()
10
+
11
+ return html_template
12
+
13
+ def generate_newsletter(self, topic, personal_message):
14
+ inputs = {
15
+ "topic": topic,
16
+ "personal_message": personal_message,
17
+ "html_template": self.load_html_template(),
18
+ }
19
+ return NewsletterGenCrew().crew().kickoff(inputs=inputs)
20
+
21
+ def newsletter_generation(self):
22
+
23
+ if st.session_state.generating:
24
+ st.session_state.newsletter = self.generate_newsletter(
25
+ st.session_state.topic, st.session_state.personal_message
26
+ )
27
+
28
+ if st.session_state.newsletter and st.session_state.newsletter != "":
29
+ with st.container():
30
+ st.write("Newsletter generated successfully!")
31
+ st.download_button(
32
+ label="Download HTML file",
33
+ data=st.session_state.newsletter,
34
+ file_name="newsletter.html",
35
+ mime="text/html",
36
+ )
37
+ st.session_state.generating = False
38
+
39
+ def sidebar(self):
40
+ with st.sidebar:
41
+ st.title("Newsletter Generator")
42
+
43
+ st.write(
44
+ """
45
+ To generate a newsletter, enter a topic and a personal message. \n
46
+ Your team of AI agents will generate a newsletter for you!
47
+ """
48
+ )
49
+
50
+ st.text_input("Topic", key="topic", placeholder="USA Stock Market")
51
+
52
+ st.text_area(
53
+ "Your personal message (to include at the top of the newsletter)",
54
+ key="personal_message",
55
+ placeholder="Dear readers, welcome to the newsletter!",
56
+ )
57
+
58
+ if st.button("Generate Newsletter"):
59
+ st.session_state.generating = True
60
+
61
+ def render(self):
62
+ st.set_page_config(page_title="Newsletter Generation", page_icon="📧")
63
+
64
+ if "topic" not in st.session_state:
65
+ st.session_state.topic = ""
66
+
67
+ if "personal_message" not in st.session_state:
68
+ st.session_state.personal_message = ""
69
+
70
+ if "newsletter" not in st.session_state:
71
+ st.session_state.newsletter = ""
72
+
73
+ if "generating" not in st.session_state:
74
+ st.session_state.generating = False
75
+
76
+ self.sidebar()
77
+
78
+ self.newsletter_generation()
79
+
80
+
81
+ if __name__ == "__main__":
82
+ NewsletterGenUI().render()