import streamlit as st import utils # Import functions from utils.py import os from gtts import gTTS import tempfile import re from deep_translator import GoogleTranslator st.title("News Summarization and Text-to-Speech Application") # User input for company name company_name = st.text_input("Enter the company name:", "").strip().lower() if st.button("Fetch News"): if company_name: # Run news extraction and analysis st.write(f"Fetching news for **{company_name}**...") # Call the function from utils.py file_name = utils.fetch_and_save_news(company_name) if os.path.exists(file_name): st.success(f"Data saved in **{file_name}**") # Read the file to display content with open(file_name, "r", encoding="utf-8") as file: text_content = file.read() st.text_area("News Analysis", text_content, height=400) # Provide a download button for text file with open(file_name, "rb") as file: st.download_button( label="Download Text File", data=file, file_name=file_name, mime="text/plain" ) # Extract only the Final Sentiment Analysis line final_sentiment_line = "" with open(file_name, "r", encoding="utf-8") as file: content = file.read() # Use regular expression to find the Final Sentiment Analysis line match = re.search(r'"Final Sentiment Analysis": "([^"]+)"', content) if match: final_sentiment_line = match.group(1) if final_sentiment_line: st.subheader("Hindi Audio for Final Sentiment Analysis") try: # First translate the English text to Hindi using deep_translator translator = GoogleTranslator(source='en', target='hi') hindi_text = translator.translate(final_sentiment_line) # Create Hindi audio from the translated text tts = gTTS(text=hindi_text, lang='hi', slow=False) # Save the audio in a temporary file temp_audio_file = tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") tts.save(temp_audio_file.name) # Provide download button for the audio with open(temp_audio_file.name, "rb") as audio_file: audio_data = audio_file.read() st.download_button( label="Download Hindi Audio", data=audio_data, file_name=f"{company_name}_sentiment_hindi.mp3", mime="audio/mp3" ) except Exception as e: st.error(f"Error generating Hindi audio: {str(e)}") else: st.warning("Could not find Final Sentiment Analysis in the text.") else: st.error("No relevant news articles found.") else: st.warning("Please enter a company name.") requirements.txt