Spaces:
Sleeping
Sleeping
File size: 4,030 Bytes
a7ac876 |
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 |
import gradio as gr
import pandas as pd
from utils import fetch_news_data
def gradio_interface(company_name, article_number):
news_df_output = pd.DataFrame(columns=["Title", "Source"])
json_summary = {}
english_news_list = []
hindi_news_list = []
# hindi_news_text = None
hindi_news_audio = None
pie_chart = None
bar_chart = None
for result in fetch_news_data(company_name, int(article_number)):
news_df_output = result.get("news_df_output", news_df_output)
json_summary = result.get("json_summary", json_summary)
english_news_list = result.get("english_news_list", english_news_list)
hindi_news_list = result.get("hindi_news_list", hindi_news_list)
# hindi_news_text = result.get("hindi_news_text", hindi_news_text)
hindi_news_audio = result.get("hindi_news_audio", hindi_news_audio)
pie_chart = result.get("pie_chart", pie_chart)
bar_chart = result.get("bar_chart", bar_chart)
yield news_df_output, json_summary, english_news_list, hindi_news_list, hindi_news_audio, pie_chart, bar_chart
with gr.Blocks(css=".btn-green { background-color: #2E7D32 !important; color: white !important; }") as interface:
gr.Markdown("# Live Company News Analyzer")
gr.Markdown("## A Project by Sara Nimje")
gr.Markdown("Enter a company name to fetch news, sentiment analysis, and more.")
with gr.Row():
company_name_input = gr.Textbox(label="Company Name", placeholder="Enter company name")
article_number_input = gr.Textbox(label="Number of Articles", placeholder="Enter number")
with gr.Row():
submit_btn = gr.Button("Submit", elem_classes=["btn-green"])
clear_btn = gr.Button("Clear")
with gr.Row():
news_df_output = gr.Dataframe(label="News Articles", interactive=False)
with gr.Row():
json_summary_output = gr.JSON(label="JSON Summary")
with gr.Row():
english_news_output = gr.List(label="English News List")
hindi_news_output = gr.List(label="Hindi News List")
with gr.Row():
# hindi_news_text_output = gr.Textbox(label="Hindi News Text", interactive=False)
hindi_news_audio_output = gr.Audio(label="Hindi News Audio")
with gr.Row():
pie_chart_output = gr.Image(label="Sentiment Pie Chart")
bar_chart_output = gr.Image(label="Sentiment Bar Chart")
submit_event = submit_btn.click(
gradio_interface,
inputs=[company_name_input, article_number_input],
outputs=[
news_df_output,
json_summary_output,
english_news_output,
hindi_news_output,
hindi_news_audio_output,
pie_chart_output,
bar_chart_output
]
)
company_name_input.submit(fn=gradio_interface, inputs=[company_name_input, article_number_input], outputs=[
news_df_output,
json_summary_output,
english_news_output,
hindi_news_output,
hindi_news_audio_output,
pie_chart_output,
bar_chart_output
])
article_number_input.submit(fn=gradio_interface, inputs=[company_name_input, article_number_input], outputs=[
news_df_output,
json_summary_output,
english_news_output,
hindi_news_output,
hindi_news_audio_output,
pie_chart_output,
bar_chart_output
])
clear_btn.click(
lambda: ("", "", pd.DataFrame(), {}, "", "", None, None),
inputs=[],
outputs=[
company_name_input,
article_number_input,
news_df_output,
json_summary_output,
english_news_output,
hindi_news_output,
hindi_news_audio_output,
pie_chart_output,
bar_chart_output
]
)
# launch app
if __name__ == "__main__":
interface.launch()
|