File size: 3,614 Bytes
53ecad3
 
 
 
 
 
88f1d25
2de8456
2758e54
93eccd0
001c0a4
03c2b26
0a567ad
fb754cd
8a70bef
26f6335
688c6c4
3b1c7bb
03c2b26
53ecad3
4239df3
 
5fea19f
302d1fb
001c0a4
03c2b26
ad53462
c2e21be
53ecad3
 
 
 
 
 
a9d8f21
53ecad3
 
a9d8f21
53ecad3
 
 
 
 
 
 
 
 
 
 
 
 
 
a9d8f21
f8cec2c
165f677
53ecad3
 
 
 
 
 
 
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
import requests
import feedparser
import gradio as gr

# Define the RSS feed URLs
news_sources = {
    "SM+": "https://gitlab.com/privatemedia/smrss/-/blob/master/smprsshypermedia.xml",
    "Ad โ€ขAssetmartโ€ข on Telegram":  "http://bit.ly/4hTmAG",
    "ABP News": "https://www.abplive.com/home/feed",
    "Axiom Article ๐Ÿ†• Spin-Up a professional article. Sponsored in part by SM+": "https://t.me/SMPlusSevenCities_Bot/AxiomArticle",
    "Ad โ€ขShopify ๐Ÿ‘œ Fash/ Wherehouseโ„ข ๐Ÿ†•": "https://fashwherehouse.myshopify.com",
    "Business Line": "https://www.thehindubusinessline.com/feeder/default.rss",
    "Fashionista ๐Ÿ‘— Elevate ๐Ÿ†• Your Wardrobe Today SS/25 #fab": "https://rn149855.myshopify.com",
    "Futures Crypto (Trading View) Sponsored in part by SM+ ๐Ÿค‘": "https://politepol.com/fd/eg8zlQt2YgLU.xml",
    "Gaby Sprugs ๐Ÿค– Nano ๐Ÿ†• ๐Ÿค“": "https://gitlab.com/privatemedia/smrss/-/blob/master/smprss.xml?ref_type=heads",
    "+ - Neutral ๐Ÿ†•๐Ÿ—ž๏ธ Artical Sentiment Analysis sponsored in part by SM+": "https://t.me/SMPlusSevenCities_Bot/plusminusorneutral",
    "Indian Express": "https://indianexpress.com/section/india/feed",
    "K-Verse News ๐Ÿ†•": "https://politepol.com/fd/H1MU8Bk3wbVU.xml",
    "Live Mint": "https://www.livemint.com/rss/news",
    "Money Control": "https://www.moneycontrol.com/rss/latestnews.xml",
    "NDTV": "https://feeds.feedburner.com/NDTV-LatestNews",
    "News 18": "https://www.news18.com/commonfeeds/v1/eng/rss/india.xml",
    "Shipping ๐Ÿšข Industry News SMPLUS20 ๐Ÿ†• Econ Indicators- California. Sponsored by SM Plus (SM+)": "https://feedfry.com/rss/11eff3c1ffb32b90aa788bf3027792d8",
    "Surfing ๐ŸŒŠ": "https://cdn.mysitemapgenerator.com/shareapi/rss/2303959522",
    "SM+ Curated Content, Movies and more ๐Ÿ†• ๐Ÿค“๐Ÿฟ": "https://smplus.vhx.tv",
    "The Federal": "https://thefederal.com/feeds.xml",
    "Tik Tok News ๐Ÿค“ Feed sponsored by SM+": "https://feedfry.com/rss/11eff2ff9439b661aee1d6bffcf7993f",
    "#UN #Housing #Celebrity #iheadline #News #CryptoNews #Futures #Spring #2025 #Entertainment #Streaming #GoldCard #Framework #gaming #Pokemon #Tariffs #EggPrices #SpringVibes": "https://feedfry.com/rss/11eff3059298fa75b1de4c8eb41bf065"
}
# Function to fetch and parse RSS feeds
def fetch_news(source):
    try:
        feed = feedparser.parse(requests.get(source).content)
        news_items = [
            f"<a href='{entry.link}' target='_blank'>{entry.title}</a>"
            for entry in feed.entries[:10]  # Fetch top 10 headlines
        ]
        return "<br><br>".join(news_items) if news_items else "No news available."
    except Exception as e:
        return f"Error fetching news: {str(e)}"

# Gradio interface function
def display_news(selected_source):
    source_url = news_sources[selected_source]
    headlines = fetch_news(source_url)
    return headlines

# Create Gradio interface
def create_interface():
    interface = gr.Interface(
        fn=display_news,
        inputs=gr.Dropdown(choices=list(news_sources.keys()), label="Select News Source"),
        outputs=gr.HTML(label="Top Headlines"),
        title="LIVE News / feeds",
        description="Select a news source from the dropdown to view its latest headlines with clickable links.  SM+ may receive earnings/commissions from affiliate links. iHeadline 1.030 {} Mod is a California Joint Venture Partnership between SM Plus Seven Cities & SM Plus (SM+). SM+ R&D Initiative, Sunsetting search for, AGI driven Intuitive Surfing (dev)"
    )
    return interface

# Deploy Gradio app
if __name__ == "__main__":
    app = create_interface()
    app.launch()