Spaces:
Sleeping
Sleeping
| import sys | |
| import os | |
| sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) | |
| import streamlit as st | |
| from src.utils import run_newsletter_workflow | |
| st.set_page_config(page_title = "ContentWeaver AI",page_icon ="📰", layout = "wide") | |
| st.title("ContentWeaver AI") | |
| st.markdown("Get a personalized newsletter based on your interests!") | |
| st.sidebar.header("Preferences") | |
| keywords_input = st.sidebar.text_area( | |
| "Enter topics/keywords (comma-separated):", | |
| "AI agents, LLM applications, RAG technology" | |
| ) | |
| selected_tone = st.sidebar.selectbox( | |
| "Select newsletter tone:", | |
| ["Informative", "Enthsiastic"], | |
| index = 0 | |
| ) | |
| craft_button = st.sidebar.button("Craft") | |
| if craft_button: | |
| if not keywords_input.strip(): | |
| st.error("Please enter some keywords!") | |
| else: | |
| preferences_dict = { | |
| "keywords": [kw.strip() for kw in keywords_input.split(",")], | |
| "preferred_tone": selected_tone | |
| } | |
| with st.spinner("Finding articsles, thinking, writing....please wait."): | |
| try: | |
| newsletter_markdown, status_message = run_newsletter_workflow(preferences_dict) | |
| if newsletter_markdown: | |
| st.success(status_message or "Newsletter ready!") | |
| st.markdown('---') | |
| st.subheader("Your personalized digest:") | |
| st.markdown(newsletter_markdown, unsafe_allow_html = True) | |
| else: | |
| st.warning(status_message or "Could not generate newsletter. Try again later.") | |
| except Exception as e: | |
| st.error(f"An error occurred: {e}") | |
| else: | |
| st.info("Adjust your preferences in the sidebar and click 'Craft'") |