File size: 5,262 Bytes
53dd0ab 8ba7699 26583d1 53dd0ab 8ba7699 aea053c 2199ce9 aea053c 8ba7699 aea053c 2199ce9 aea053c 2199ce9 aea053c 8ba7699 aea053c 2199ce9 aea053c 8ba7699 aea053c 2199ce9 aea053c 8ba7699 aea053c 2199ce9 aea053c 2199ce9 aea053c 8ba7699 53dd0ab aea053c 2199ce9 53dd0ab 2199ce9 8ba7699 2199ce9 aea053c 8ba7699 2199ce9 aea053c 8ba7699 aea053c 8ba7699 aea053c 8ba7699 2199ce9 53dd0ab 8ba7699 627e458 1f7d4c3 c8cd522 53dd0ab 34b7458 53dd0ab 8ba7699 53dd0ab aea053c 53dd0ab 8ba7699 53dd0ab aea053c 53dd0ab |
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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
import streamlit as st
import requests
BASE_URL = "http://localhost:8000" # Base URL for API requests
st.title("Company News Sentiment Analysis")
# Input field for company name
company_name = st.text_input(
"Enter the company name:",
placeholder="Example: Microsoft, Apple, Tesla"
)
# Function to display articles with sentiment analysis
def display_articles(articles):
for i, article in enumerate(articles, start=1):
st.markdown(f"##### **Article {i}: {article['Title']}**")
st.write(f"- **Summary:** {article['Summary']}")
st.write(f"- **Sentiment:** {article['Sentiment']} | **Score:** {article['Score']:.2f}")
st.write(f"- **Topics:** {', '.join(article['Topics'])}")
# Function to display sentiment distribution in table format
def display_sentiment_distribution(sentiment_distribution):
st.markdown("#### **Sentiment Distribution:**")
sentiment_data = {
"Sentiment": list(sentiment_distribution.keys()),
"Count": list(sentiment_distribution.values())
}
st.table(sentiment_data)
# Function to display coverage differences between articles
def display_coverage_differences(coverage_differences):
if coverage_differences:
st.markdown("#### **Coverage Differences:**")
for diff in coverage_differences:
st.write(f"- **{diff['Comparison']}:** {diff['Impact']}")
# Function to display topic overlap analysis
def display_topic_overlap(topic_overlap):
st.markdown("#### **Topic Overlap:**")
st.write(f"- **Common Topics:** {', '.join(topic_overlap['Common Topics'])}")
st.markdown("- **Unique Topics by Article:**")
for article, topics in topic_overlap["Unique Topics"].items():
st.write(f" - **{article}:** {', '.join(topics)}")
# Button to generate summary based on company name
if st.button("Generate Summary"):
if company_name:
try:
summary_url = f"{BASE_URL}/generateSummary?company_name={company_name}"
response = requests.post(summary_url)
if response.status_code == 200:
data = response.json()
st.markdown(f"#### **Company: {data.get('Company', 'Unknown')}**")
# Display articles with sentiment analysis
st.markdown("#### **Articles:**")
display_articles(data.get("Articles", []))
# Display sentiment analysis details
st.markdown("#### **Comparative Sentiment Score:**")
sentiment_distribution = data.get("Comparative Sentiment Score", {}).get("Sentiment Distribution", {})
display_sentiment_distribution(sentiment_distribution)
coverage_differences = data.get("Comparative Sentiment Score", {}).get("Coverage Differences", [])
display_coverage_differences(coverage_differences)
topic_overlap = data.get("Comparative Sentiment Score", {}).get("Topic Overlap", {})
display_topic_overlap(topic_overlap)
# Display final sentiment analysis result
st.markdown("#### **Final Sentiment Analysis:**")
st.write(data.get("Final Sentiment Analysis", "No sentiment analysis available."))
# Display and play Hindi summary audio
st.markdown("#### **Hindi Summary Audio:**")
st.write(data.get("Audio", "No Audio available"))
audio_url = f"{BASE_URL}/downloadHindiAudio"
audio_response = requests.get(audio_url)
if audio_response.status_code == 200:
st.audio(audio_response.content, format="audio/mp3")
else:
st.error("Failed to load audio.")
else:
st.error(f"Error: {response.status_code}, {response.text}")
except Exception as e:
st.error(f"An error occurred: {e}")
else:
st.warning("Please enter a company name !")
# Button to download the final summary in JSON format
if st.button("Download JSON File"):
json_url = f"{BASE_URL}/downloadJson"
try:
response = requests.get(json_url)
if response.status_code == 200:
st.download_button(
label="Download JSON File",
data=response.content,
file_name="final_summary.json",
mime="application/json",
)
else:
st.error(f"Error: {response.status_code}, {response.text}")
except Exception as e:
st.error(f"An error occurred: {e}")
# Button to download Hindi summary audio file
if st.button("Download Hindi Audio"):
audio_url = f"{BASE_URL}/downloadHindiAudio"
try:
response = requests.get(audio_url)
if response.status_code == 200:
st.download_button(
label="Download Hindi Audio",
data=response.content,
file_name="hindi_summary.mp3",
mime="audio/mp3",
)
else:
st.error(f"Error: {response.status_code}, {response.text}")
except Exception as e:
st.error(f"An error occurred: {e}")
|