[READ-ONLY] Mirror of https://github.com/aaronateataco/SonicBridge. proxy for web radios sonicradio.vercel.app
0

Configure Feed

Select the types of activity you want to include in your feed.

Enhance station data with descriptions and images for better user experience

aaronateataco (Jul 15, 2026, 7:09 PM +0100) 12afe5d8 7f98ab87

+46 -18
+22 -8
api/stations.py
··· 6 6 7 7 # Verified working Akamai live stream pools for global access 8 8 STATIONS = { 9 - "radio1": {"name": "BBC Radio 1", "pool": "pool_01505109", "slug": "bbc_radio_one"}, 10 - "radio1xtra": {"name": "BBC Radio 1Xtra", "pool": "pool_92079267", "slug": "bbc_1xtra"}, 11 - "radio2": {"name": "BBC Radio 2", "pool": "pool_74208725", "slug": "bbc_radio_two"}, 12 - "radio3": {"name": "BBC Radio 3", "pool": "pool_23461179", "slug": "bbc_radio_three"}, 13 - "radio4": {"name": "BBC Radio 4", "pool": "pool_55057080", "slug": "bbc_radio_fourfm"}, 14 - "radio4extra": {"name": "BBC Radio 4 Extra", "pool": "pool_26173715", "slug": "bbc_radio_four_extra"}, 15 - "radio5": {"name": "BBC Radio 5 Live", "pool": "pool_89021708", "slug": "bbc_radio_five_live"}, 16 - "6music": {"name": "BBC Radio 6 Music", "pool": "pool_81827798", "slug": "bbc_6music"} 9 + "radio1": {"name": "Radio 1", "pool": "pool_01505109", "slug": "bbc_radio_one", "description": "The biggest new pop & all day vibes.", "image": "p0mw72yd"}, 10 + "radio1_anthems": {"name": "Radio 1 Anthems", "pool": "pool_01505109", "slug": "bbc_radio_one_anthems", "description": "All day anthems from the 00s to now.", "image": "p0mw73cr"}, 11 + "radio1_dance": {"name": "Radio 1 Dance", "pool": "pool_01505109", "slug": "bbc_radio_one_dance", "description": "The biggest current, future and classic dance vibes.", "image": "p0mw73jl"}, 12 + "radio1xtra": {"name": "Radio 1Xtra", "pool": "pool_92079267", "slug": "bbc_1xtra", "description": "Amplifying black music & culture.", "image": "p0mw73ww"}, 13 + "radio2": {"name": "Radio 2", "pool": "pool_74208725", "slug": "bbc_radio_two", "description": "Lift your day with the best tunes from your favourite DJs.", "image": "p0mw747g"}, 14 + "radio3": {"name": "Radio 3", "pool": "pool_23461179", "slug": "bbc_radio_three", "description": "Adventures in classical.", "image": "p0mw74jk"}, 15 + "radio3_unwind": {"name": "Radio 3 Unwind", "pool": "pool_23461179", "slug": "bbc_radio_three_unwind", "description": "Music to unwind your mind.", "image": "p0mw74rj"}, 16 + "radio4_extra": {"name": "Radio 4 Extra", "pool": "pool_55057080", "slug": "bbc_radio_four_extra", "description": "Journey into the Radio 4 archive.", "image": "p0mw751h"}, 17 + "radio5": {"name": "Radio 5 Live", "pool": "pool_89021708", "slug": "bbc_radio_five_live", "description": "The voice of the UK - breaking news & live sport.", "image": "p0mw75bg"}, 18 + "6music": {"name": "Radio 6 Music", "pool": "pool_81827798", "slug": "bbc_6music", "description": "Music beyond the mainstream.", "image": "p0mwrlsp"}, 19 + "asian_network": {"name": "Asian Network", "pool": "pool_01505109", "slug": "bbc_asian_network", "description": "Celebrating British Asian identity.", "image": "p0mwrmw1"}, 20 + "scotland": {"name": "Radio Scotland", "pool": "pool_01505109", "slug": "bbc_radio_scotland_fm", "description": "The sound of Scotland's news, sport, music and culture.", "image": "p0mwrnb1"}, 21 + "scotland_extra": {"name": "Radio Scotland Extra", "pool": "pool_01505109", "slug": "bbc_radio_scotland_mw", "description": "The sound of where you live.", "image": "p0mwrnh8"}, 22 + "orkney": {"name": "Radio Orkney", "pool": "pool_01505109", "slug": "bbc_radio_orkney", "description": "The sound of where you live.", "image": "p0mwrpc9"}, 23 + "shetland": {"name": "Radio Shetland", "pool": "pool_01505109", "slug": "bbc_radio_shetland", "description": "The sound of where you live.", "image": "p0mwrpw1"}, 24 + "nan_gaidheal": {"name": "Radio nan Gàidheal", "pool": "pool_01505109", "slug": "bbc_radio_nan_gaidheal", "description": "Guthan nan Gaidheal gach là as gach ceàrnaidh.", "image": "p0mwrsnm"}, 25 + "ulster": {"name": "Radio Ulster", "pool": "pool_01505109", "slug": "bbc_radio_ulster", "description": "Local news, sport, music and chat.", "image": "p0mwrvhs"}, 26 + "foyle": {"name": "Radio Foyle", "pool": "pool_01505109", "slug": "bbc_radio_foyle", "description": "Local news, sport, music and chat.", "image": "p0mwrz4p"}, 27 + "wales": {"name": "Radio Wales", "pool": "pool_01505109", "slug": "bbc_radio_wales_fm", "description": "News, sport, music and entertainment for Wales.", "image": "p0mws3dw"}, 28 + "wales_extra": {"name": "Radio Wales Extra", "pool": "pool_01505109", "slug": "bbc_radio_wales_am", "description": "The sound of where you live.", "image": "p0mwt9gz"}, 29 + "cymru": {"name": "Radio Cymru", "pool": "pool_01505109", "slug": "bbc_radio_cymru", "description": "Newyddion, cerddoriaeth a chwmni da.", "image": "p0mwtb2k"}, 30 + "cymru2": {"name": "Radio Cymru 2", "pool": "pool_01505109", "slug": "bbc_radio_cymru_2", "description": "Tiwns trwy'r dydd.", "image": "p0mwtbt8"}, 17 31 } 18 32 19 33 class handler(BaseHTTPRequestHandler):
+24 -10
app.py
··· 15 15 16 16 # Verified working Akamai live stream pools for global access 17 17 STATIONS = { 18 - "radio1": {"name": "BBC Radio 1", "pool": "pool_01505109", "slug": "bbc_radio_one"}, 19 - "radio1xtra": {"name": "BBC Radio 1Xtra", "pool": "pool_92079267", "slug": "bbc_1xtra"}, 20 - "radio2": {"name": "BBC Radio 2", "pool": "pool_74208725", "slug": "bbc_radio_two"}, 21 - "radio3": {"name": "BBC Radio 3", "pool": "pool_23461179", "slug": "bbc_radio_three"}, 22 - "radio4": {"name": "BBC Radio 4", "pool": "pool_55057080", "slug": "bbc_radio_fourfm"}, 23 - "radio4extra": {"name": "BBC Radio 4 Extra", "pool": "pool_26173715", "slug": "bbc_radio_four_extra"}, 24 - "radio5": {"name": "BBC Radio 5 Live", "pool": "pool_89021708", "slug": "bbc_radio_five_live"}, 25 - "6music": {"name": "BBC Radio 6 Music", "pool": "pool_81827798", "slug": "bbc_6music"} 18 + "radio1": {"name": "Radio 1", "pool": "pool_01505109", "slug": "bbc_radio_one", "description": "The biggest new pop & all day vibes.", "image": "p0mw72yd"}, 19 + "radio1_anthems": {"name": "Radio 1 Anthems", "pool": "pool_01505109", "slug": "bbc_radio_one_anthems", "description": "All day anthems from the 00s to now.", "image": "p0mw73cr"}, 20 + "radio1_dance": {"name": "Radio 1 Dance", "pool": "pool_01505109", "slug": "bbc_radio_one_dance", "description": "The biggest current, future and classic dance vibes.", "image": "p0mw73jl"}, 21 + "radio1xtra": {"name": "Radio 1Xtra", "pool": "pool_92079267", "slug": "bbc_1xtra", "description": "Amplifying black music & culture.", "image": "p0mw73ww"}, 22 + "radio2": {"name": "Radio 2", "pool": "pool_74208725", "slug": "bbc_radio_two", "description": "Lift your day with the best tunes from your favourite DJs.", "image": "p0mw747g"}, 23 + "radio3": {"name": "Radio 3", "pool": "pool_23461179", "slug": "bbc_radio_three", "description": "Adventures in classical.", "image": "p0mw74jk"}, 24 + "radio3_unwind": {"name": "Radio 3 Unwind", "pool": "pool_23461179", "slug": "bbc_radio_three_unwind", "description": "Music to unwind your mind.", "image": "p0mw74rj"}, 25 + "radio4_extra": {"name": "Radio 4 Extra", "pool": "pool_55057080", "slug": "bbc_radio_four_extra", "description": "Journey into the Radio 4 archive.", "image": "p0mw751h"}, 26 + "radio5": {"name": "Radio 5 Live", "pool": "pool_89021708", "slug": "bbc_radio_five_live", "description": "The voice of the UK - breaking news & live sport.", "image": "p0mw75bg"}, 27 + "6music": {"name": "Radio 6 Music", "pool": "pool_81827798", "slug": "bbc_6music", "description": "Music beyond the mainstream.", "image": "p0mwrlsp"}, 28 + "asian_network": {"name": "Asian Network", "pool": "pool_01505109", "slug": "bbc_asian_network", "description": "Celebrating British Asian identity.", "image": "p0mwrmw1"}, 29 + "scotland": {"name": "Radio Scotland", "pool": "pool_01505109", "slug": "bbc_radio_scotland_fm", "description": "The sound of Scotland's news, sport, music and culture.", "image": "p0mwrnb1"}, 30 + "scotland_extra": {"name": "Radio Scotland Extra", "pool": "pool_01505109", "slug": "bbc_radio_scotland_mw", "description": "The sound of where you live.", "image": "p0mwrnh8"}, 31 + "orkney": {"name": "Radio Orkney", "pool": "pool_01505109", "slug": "bbc_radio_orkney", "description": "The sound of where you live.", "image": "p0mwrpc9"}, 32 + "shetland": {"name": "Radio Shetland", "pool": "pool_01505109", "slug": "bbc_radio_shetland", "description": "The sound of where you live.", "image": "p0mwrpw1"}, 33 + "nan_gaidheal": {"name": "Radio nan Gàidheal", "pool": "pool_01505109", "slug": "bbc_radio_nan_gaidheal", "description": "Guthan nan Gaidheal gach là as gach ceàrnaidh.", "image": "p0mwrsnm"}, 34 + "ulster": {"name": "Radio Ulster", "pool": "pool_01505109", "slug": "bbc_radio_ulster", "description": "Local news, sport, music and chat.", "image": "p0mwrvhs"}, 35 + "foyle": {"name": "Radio Foyle", "pool": "pool_01505109", "slug": "bbc_radio_foyle", "description": "Local news, sport, music and chat.", "image": "p0mwrz4p"}, 36 + "wales": {"name": "Radio Wales", "pool": "pool_01505109", "slug": "bbc_radio_wales_fm", "description": "News, sport, music and entertainment for Wales.", "image": "p0mws3dw"}, 37 + "wales_extra": {"name": "Radio Wales Extra", "pool": "pool_01505109", "slug": "bbc_radio_wales_am", "description": "The sound of where you live.", "image": "p0mwt9gz"}, 38 + "cymru": {"name": "Radio Cymru", "pool": "pool_01505109", "slug": "bbc_radio_cymru", "description": "Newyddion, cerddoriaeth a chwmni da.", "image": "p0mwtb2k"}, 39 + "cymru2": {"name": "Radio Cymru 2", "pool": "pool_01505109", "slug": "bbc_radio_cymru_2", "description": "Tiwns trwy'r dydd.", "image": "p0mwtbt8"}, 26 40 } 27 41 28 42 @app.get("/", response_class=HTMLResponse) ··· 36 50 stations.append({ 37 51 "id": token, 38 52 "name": config["name"], 39 - "description": f"Live {config['name']} stream", 40 - "image": f"https://sounds.files.bbci.co.uk/3.9.4/networks/{config['slug']}/colour_default.svg" 53 + "description": config.get("description", f"Live {config['name']} stream"), 54 + "image": f"https://ichef.bbci.co.uk/images/ic/raw/{config['image']}.png.webp" 41 55 }) 42 56 return stations 43 57