import gradio as gr import feedparser from datetime import datetime, timedelta import time # Fetch and sort agri news (last 1 year) def fetch_all_hindi_agri_news(): query = "कृषि" rss_url = f"https://news.google.com/rss/search?q={query}&hl=hi-IN&gl=IN&ceid=IN:hi" feed = feedparser.parse(rss_url) now = datetime.now() one_year_ago = now - timedelta(days=365) news_items = [] for entry in feed.entries: try: published_time = datetime.fromtimestamp(time.mktime(entry.published_parsed)) except: continue if published_time >= one_year_ago: news_items.append({ "title": entry.title, "link": entry.link, "published_dt": published_time, "published": published_time.strftime("%Y-%m-%d %H:%M") }) news_items.sort(key=lambda x: x["published_dt"], reverse=True) return news_items # Render 20 news items def render_news(news_items, start, count=20): sliced = news_items[start:start+count] if not sliced: return "

✅ आपने सभी समाचार देख लिए हैं।

" result = "" for i, item in enumerate(sliced, start + 1): result += f"{i}. {item['title']}
\n" result += f"🔗 समाचार लिंक
\n" result += f"🗓️ प्रकाशित: {item['published']}
\n" result += f"
\n" return result # Load initial news def load_initial_news(): news = fetch_all_hindi_agri_news() display = render_news(news, 0) return display, news, 20 # Load more news def load_more_news(news_state, current_index): display = render_news(news_state, current_index) js_scroll_top = "" return display + js_scroll_top, current_index + 20 # Gradio App with gr.Blocks(title="निंजा किसान कृषि समाचार") as demo: gr.HTML("

निंजा किसान कृषि समाचार

", elem_id="title") output_html = gr.HTML() load_more_bottom = gr.Button("🔄 और समाचार देखें") news_state = gr.State([]) news_index = gr.State(0) demo.load(fn=load_initial_news, outputs=[output_html, news_state, news_index]) load_more_bottom.click(fn=load_more_news, inputs=[news_state, news_index], outputs=[output_html, news_index]) demo.launch()