Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import openai | |
| import requests | |
| import os | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| openai.api_key = os.getenv("OPENAI_API_KEY") | |
| NEWS_API_KEY = os.getenv("NEWS_API_KEY") | |
| st.set_page_config( | |
| page_title="Senator Successes", | |
| layout="centered" | |
| ) | |
| st.title("๐บ๐ธ Senator Successes") | |
| st.markdown("Highlighting recent positive achievements and bipartisan efforts by U.S. Senators.") | |
| query = "Senator success OR achievement" | |
| def fetch_news(q): | |
| url = "https://newsapi.org/v2/everything" | |
| params = { | |
| "q": q, | |
| "language": "en", | |
| "pageSize": 50, | |
| "sortBy": "publishedAt", | |
| "apiKey": NEWS_API_KEY, | |
| } | |
| response = requests.get(url, params=params) | |
| return response.json().get('articles', []) | |
| articles = fetch_news(query) | |
| if articles: | |
| for idx, article in enumerate(articles): | |
| st.subheader(article['title']) | |
| st.caption(f"Source: {article['source']['name']} | Published: {article['publishedAt'][:10]}") | |
| if st.button(f"Summarize Article {idx+1}"): | |
| with st.spinner('Generating summary...'): | |
| prompt = f"Summarize this article highlighting positive bipartisan successes or achievements by US senators:\n\n{article['url']}" | |
| summary_response = openai.ChatCompletion.create( | |
| model="gpt-4o", | |
| messages=[ | |
| {"role": "system", "content": "You summarize news articles concisely, emphasizing positive bipartisan achievements by US senators."}, | |
| {"role": "user", "content": prompt} | |
| ], | |
| max_tokens=150, | |
| temperature=0.2, | |
| ) | |
| summary = summary_response.choices[0].message.content.strip() | |
| st.write(summary) | |
| st.markdown("---") | |
| else: | |
| st.info("No articles found. Try again later.") | |