Files
radio-explorer/data/seed/stations-extended.json
Marco Mooren 00246389bc Add API documentation and underground station importer
- Introduced a new HTML documentation page for the oradio API, including a JavaScript file to handle dynamic content and API requests.
- Added a CSS file for styling the documentation page.
- Implemented an underground station importer script that fetches data from Radio-Browser and writes it to a JSON file.
- Created a stats module to compute and manage vote and play statistics for radio stations.
- Added a polyfill for modulepreload to ensure compatibility with older browsers.
2026-05-11 02:06:48 +02:00

1820 lines
52 KiB
JSON

[
{
"slug": "npo-radio-1",
"name": "NPO Radio 1",
"category": "dutch-public",
"country": "NL",
"homepage": "https://www.nporadio1.nl/",
"genres": [
"news",
"talk",
"sports"
],
"description": "Dutch public radio: news, sports, opinion.",
"streams": [
{
"url": "https://icecast.omroep.nl/radio1-bb-mp3",
"format": "mp3",
"bitrate": 192,
"label": "MP3 192",
"priority": 0
},
{
"url": "http://icecast.omroep.nl/radio1-sb-aac",
"format": "aac",
"bitrate": 32,
"label": "AAC 32 (low)",
"priority": 1
}
]
},
{
"slug": "npo-radio-2",
"name": "NPO Radio 2",
"category": "dutch-public",
"country": "NL",
"homepage": "https://www.nporadio2.nl/",
"genres": [
"pop",
"rock",
"adult"
],
"description": "Dutch public radio: pop and rock for adults.",
"streams": [
{
"url": "https://icecast.omroep.nl/radio2-bb-mp3",
"format": "mp3",
"bitrate": 192,
"label": "MP3 192",
"priority": 0
}
]
},
{
"slug": "npo-radio-2-soul-jazz",
"name": "NPO Radio 2 Soul & Jazz",
"category": "dutch-public",
"country": "NL",
"homepage": "https://www.nporadio2.nl/soulenjazz",
"genres": [
"soul",
"jazz"
],
"description": "Dutch public soul & jazz station.",
"streams": [
{
"url": "https://icecast.omroep.nl/radio6-bb-mp3",
"format": "mp3",
"bitrate": 192,
"label": "MP3 192",
"priority": 0
}
]
},
{
"slug": "npo-3fm",
"name": "NPO 3FM",
"category": "dutch-public",
"country": "NL",
"homepage": "https://www.npo3fm.nl/",
"genres": [
"pop",
"rock",
"indie"
],
"description": "Dutch public youth-oriented pop/rock.",
"streams": [
{
"url": "https://icecast.omroep.nl/3fm-bb-mp3",
"format": "mp3",
"bitrate": 192,
"label": "MP3 192",
"priority": 0
}
]
},
{
"slug": "npo-radio-4",
"name": "NPO Radio 4",
"category": "dutch-public",
"country": "NL",
"homepage": "https://www.nporadio4.nl/",
"genres": [
"classical",
"opera"
],
"description": "Dutch public classical and opera.",
"streams": [
{
"url": "https://icecast.omroep.nl/radio4-bb-mp3",
"format": "mp3",
"bitrate": 192,
"label": "MP3 192",
"priority": 0
}
]
},
{
"slug": "npo-radio-4-concerten",
"name": "NPO Radio 4 Concerten",
"category": "classical",
"country": "NL",
"homepage": "https://www.nporadio4.nl/",
"genres": [
"classical",
"concert"
],
"description": "Live and recorded classical concerts.",
"streams": [
{
"url": "https://icecast.omroep.nl/radio4-eigentijds-mp3",
"format": "mp3",
"bitrate": 192,
"label": "MP3 192",
"priority": 0
}
]
},
{
"slug": "npo-radio-5",
"name": "NPO Radio 5",
"category": "dutch-public",
"country": "NL",
"homepage": "https://www.nporadio5.nl/",
"genres": [
"oldies",
"nederlandstalig"
],
"description": "Hits and Dutch-language music.",
"streams": [
{
"url": "https://icecast.omroep.nl/radio5-bb-mp3",
"format": "mp3",
"bitrate": 192,
"label": "MP3 192",
"priority": 0
}
]
},
{
"slug": "funx",
"name": "FunX",
"category": "dutch-public",
"country": "NL",
"homepage": "https://www.funx.nl/",
"genres": [
"urban",
"hip-hop",
"r-n-b"
],
"description": "Multicultural Dutch youth radio.",
"streams": [
{
"url": "https://icecast.omroep.nl/funx-bb-mp3",
"format": "mp3",
"bitrate": 192,
"label": "MP3 192",
"priority": 0
}
]
},
{
"slug": "funx-hiphop",
"name": "FunX Hip-Hop",
"category": "dutch-public",
"country": "NL",
"homepage": "https://www.funx.nl/funx-hiphop",
"genres": [
"hip-hop"
],
"description": "FunX hip-hop channel.",
"streams": [
{
"url": "http://icecast.omroep.nl/funx-hiphopfb-bb-mp3",
"format": "mp3",
"bitrate": 192,
"label": "MP3 192",
"priority": 0
}
]
},
{
"slug": "concertzender-baroque",
"name": "Concertzender Baroque",
"category": "classical",
"country": "NL",
"homepage": "https://www.concertzender.nl/",
"genres": [
"baroque",
"classical"
],
"description": "Baroque classical from Concertzender.",
"streams": [
{
"url": "http://streams.greenhost.nl:8080/barok",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "concertzender-old-music",
"name": "Concertzender Oude Muziek",
"category": "classical",
"country": "NL",
"homepage": "https://www.concertzender.nl/",
"genres": [
"early-music",
"classical"
],
"description": "Pre-classical compositions.",
"streams": [
{
"url": "http://streams.greenhost.nl:8080/oudemuziek",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "concertzender-world-of-jazz",
"name": "Concertzender World of Jazz",
"category": "jazz",
"country": "NL",
"homepage": "https://www.concertzender.nl/zender/world-of-jazz/",
"genres": [
"jazz",
"fusion",
"world"
],
"description": "Jazz, fusion, and world music.",
"streams": [
{
"url": "http://streams.greenhost.nl:8080/jazz",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "qmusic-nl",
"name": "Q-music NL",
"category": "dutch-commercial",
"country": "NL",
"homepage": "https://qmusic.nl/",
"genres": [
"pop",
"hits"
],
"description": "Dutch commercial hits radio.",
"streams": [
{
"url": "https://icecast-qmusicnl-cdp.triple-it.nl/Qmusic_nl_live.mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "joe-nl",
"name": "Joe NL",
"category": "dutch-commercial",
"country": "NL",
"homepage": "https://www.joe.nl/",
"genres": [
"adult",
"rock",
"hits"
],
"description": "Dutch adult contemporary commercial radio.",
"streams": [
{
"url": "https://icecast-qmusicnl-cdp.triple-it.nl/Joe_nl.mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
},
{
"url": "https://icecast-qmusicnl-cdp.triple-it.nl/Joe_nl_high.aac",
"format": "aac",
"bitrate": 96,
"label": "AAC+ 96",
"priority": 1
}
]
},
{
"slug": "sky-radio",
"name": "Sky Radio",
"category": "dutch-commercial",
"country": "NL",
"homepage": "https://www.skyradio.nl/",
"genres": [
"pop",
"hits"
],
"description": "Dutch hit radio.",
"streams": [
{
"url": "https://playerservices.streamtheworld.com/api/livestream-redirect/SRGSTR01.mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "sky-radio-80s",
"name": "Sky Radio 80's Hits",
"category": "dutch-commercial",
"country": "NL",
"homepage": "https://www.skyradio.nl/",
"genres": [
"80s",
"pop"
],
"description": "All 80s hits, all the time.",
"streams": [
{
"url": "https://playerservices.streamtheworld.com/api/livestream-redirect/SRGSTR04.mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "radio-538",
"name": "Radio 538",
"category": "dutch-commercial",
"country": "NL",
"homepage": "https://www.538.nl/",
"genres": [
"dance",
"pop"
],
"description": "Dutch dance and pop hits.",
"streams": [
{
"url": "https://playerservices.streamtheworld.com/api/livestream-redirect/RADIO538.mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "slam",
"name": "SLAM!",
"category": "dutch-commercial",
"country": "NL",
"homepage": "https://www.slam.nl/",
"genres": [
"dance",
"edm"
],
"description": "Dance, EDM, club hits.",
"streams": [
{
"url": "http://stream.slam.nl/slam_mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
},
{
"url": "http://stream.radiocorp.nl/web10_mp3",
"format": "mp3",
"bitrate": 128,
"label": "Non Stop",
"priority": 1
}
]
},
{
"slug": "radio-veronica",
"name": "Radio Veronica",
"category": "dutch-commercial",
"country": "NL",
"homepage": "https://www.radioveronica.nl/",
"genres": [
"classic-rock",
"pop"
],
"description": "Dutch classic rock.",
"streams": [
{
"url": "https://playerservices.streamtheworld.com/api/livestream-redirect/VERONICAAAC.aac",
"format": "aac",
"bitrate": 64,
"label": "AAC+ 64",
"priority": 0
}
]
},
{
"slug": "bnr",
"name": "BNR Nieuwsradio",
"category": "dutch-commercial",
"country": "NL",
"homepage": "https://www.bnr.nl/",
"genres": [
"news",
"business"
],
"description": "Dutch business and news radio.",
"streams": [
{
"url": "https://stream.bnr.nl/bnr_aac_96_20",
"format": "aac",
"bitrate": 96,
"label": "AAC+ 96",
"priority": 0
},
{
"url": "https://stream.bnr.nl/bnr_mp3_128_20",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 1
}
]
},
{
"slug": "pinguin-radio",
"name": "Pinguin Radio",
"category": "dutch-commercial",
"country": "NL",
"homepage": "https://pinguinradio.com/",
"genres": [
"alternative",
"indie"
],
"description": "Dutch alternative and indie network.",
"streams": [
{
"url": "http://pr320.pinguinradio.com/",
"format": "mp3",
"bitrate": 320,
"label": "MP3 320",
"priority": 0
}
]
},
{
"slug": "bbc-radio-1",
"name": "BBC Radio 1",
"category": "bbc",
"country": "GB",
"homepage": "https://www.bbc.co.uk/sounds/play/live:bbc_radio_one",
"genres": [
"pop",
"dance",
"rock"
],
"description": "Contemporary pop, dance, and rock from the UK.",
"streams": [
{
"url": "http://a.files.bbci.co.uk/ms6/live/3441A116-B12E-4D2F-ACA8-C1984642FA4B/audio/simulcast/hls/nonuk/pc_hd_abr_v2/ak/bbc_radio_one.m3u8",
"format": "hls",
"bitrate": 128,
"label": "HLS Akamai",
"priority": 0
}
]
},
{
"slug": "bbc-1xtra",
"name": "BBC Radio 1Xtra",
"category": "bbc",
"country": "GB",
"homepage": "https://www.bbc.co.uk/sounds/play/live:bbc_1xtra",
"genres": [
"hip-hop",
"r-n-b",
"afrobeats"
],
"description": "Black music and culture from the UK.",
"streams": [
{
"url": "http://as-hls-ww-live.akamaized.net/pool_92079267/live/ww/bbc_1xtra/bbc_1xtra.isml/bbc_1xtra-audio%3d128000.norewind.m3u8",
"format": "hls",
"bitrate": 128,
"label": "HLS 128",
"priority": 0
}
]
},
{
"slug": "bbc-radio-2",
"name": "BBC Radio 2",
"category": "bbc",
"country": "GB",
"homepage": "https://www.bbc.co.uk/sounds/play/live:bbc_radio_two",
"genres": [
"adult",
"pop"
],
"description": "Adult contemporary and culture from the UK.",
"streams": [
{
"url": "http://as-hls-ww-live.akamaized.net/pool_74208725/live/ww/bbc_radio_two/bbc_radio_two.isml/bbc_radio_two-audio%3d128000.norewind.m3u8",
"format": "hls",
"bitrate": 128,
"label": "HLS 128",
"priority": 0
}
]
},
{
"slug": "bbc-radio-3",
"name": "BBC Radio 3",
"category": "bbc",
"country": "GB",
"homepage": "https://www.bbc.co.uk/sounds/play/live:bbc_radio_three",
"genres": [
"classical",
"jazz",
"world"
],
"description": "Classical, jazz, and world music.",
"streams": [
{
"url": "http://as-hls-ww-live.akamaized.net/pool_23461179/live/ww/bbc_radio_three/bbc_radio_three.isml/bbc_radio_three-audio%3d128000.norewind.m3u8",
"format": "hls",
"bitrate": 128,
"label": "HLS 128",
"priority": 0
}
]
},
{
"slug": "bbc-radio-4",
"name": "BBC Radio 4",
"category": "bbc",
"country": "GB",
"homepage": "https://www.bbc.co.uk/sounds/play/live:bbc_radio_fourfm",
"genres": [
"news",
"drama",
"comedy"
],
"description": "UK news, drama, and comedy.",
"streams": [
{
"url": "http://as-hls-ww-live.akamaized.net/pool_55057080/live/ww/bbc_radio_fourfm/bbc_radio_fourfm.isml/bbc_radio_fourfm-audio%3d128000.norewind.m3u8",
"format": "hls",
"bitrate": 128,
"label": "HLS 128",
"priority": 0
}
]
},
{
"slug": "bbc-radio-4-extra",
"name": "BBC Radio 4 Extra",
"category": "bbc",
"country": "GB",
"homepage": "https://www.bbc.co.uk/sounds/play/live:bbc_radio_four_extra",
"genres": [
"spoken-word",
"comedy"
],
"description": "BBC Radio 4 Extra: spoken word, comedy, drama.",
"streams": [
{
"url": "http://as-hls-ww-live.akamaized.net/pool_26173715/live/ww/bbc_radio_four_extra/bbc_radio_four_extra.isml/bbc_radio_four_extra-audio%3d128000.norewind.m3u8",
"format": "hls",
"bitrate": 128,
"label": "HLS 128",
"priority": 0
}
]
},
{
"slug": "bbc-5-live",
"name": "BBC Radio 5 Live",
"category": "bbc",
"country": "GB",
"homepage": "https://www.bbc.co.uk/sounds/play/live:bbc_radio_five_live",
"genres": [
"news",
"sports"
],
"description": "BBC news and sports talk.",
"streams": [
{
"url": "http://as-hls-ww-live.akamaized.net/pool_89021708/live/ww/bbc_radio_five_live/bbc_radio_five_live.isml/bbc_radio_five_live-audio%3d128000.norewind.m3u8",
"format": "hls",
"bitrate": 128,
"label": "HLS 128",
"priority": 0
}
]
},
{
"slug": "bbc-asian-network",
"name": "BBC Asian Network",
"category": "bbc",
"country": "GB",
"homepage": "https://www.bbc.co.uk/sounds/play/live:bbc_asian_network",
"genres": [
"asian",
"bollywood"
],
"description": "BBC Asian Network: South Asian music and talk.",
"streams": [
{
"url": "http://as-hls-ww-live.akamaized.net/pool_22108647/live/ww/bbc_asian_network/bbc_asian_network.isml/bbc_asian_network-audio%3d128000.norewind.m3u8",
"format": "hls",
"bitrate": 128,
"label": "HLS 128",
"priority": 0
}
]
},
{
"slug": "bbc-world-service",
"name": "BBC World Service",
"category": "bbc",
"country": "GB",
"homepage": "https://www.bbc.co.uk/worldserviceradio",
"genres": [
"news",
"world"
],
"description": "International news and cultural programs.",
"streams": [
{
"url": "https://stream.live.vc.bbcmedia.co.uk/bbc_world_service",
"format": "mp3",
"bitrate": 56,
"label": "MP3 56",
"priority": 0
}
]
},
{
"slug": "fip-rock",
"name": "FIP Rock",
"category": "fip",
"country": "FR",
"homepage": "https://www.radiofrance.fr/fip/radio-rock",
"genres": [
"rock"
],
"description": "Rock channel from FIP.",
"streams": [
{
"url": "https://icecast.radiofrance.fr/fiprock-hifi.aac",
"format": "aac",
"bitrate": 192,
"label": "HiFi AAC",
"priority": 0
},
{
"url": "https://icecast.radiofrance.fr/fiprock-midfi.mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 1
}
]
},
{
"slug": "fip-pop",
"name": "FIP Pop",
"category": "fip",
"country": "FR",
"homepage": "https://www.radiofrance.fr/fip/radio-pop",
"genres": [
"pop"
],
"description": "Pop channel from FIP.",
"streams": [
{
"url": "https://icecast.radiofrance.fr/fippop-hifi.aac",
"format": "aac",
"bitrate": 192,
"label": "HiFi AAC",
"priority": 0
},
{
"url": "https://icecast.radiofrance.fr/fippop-midfi.mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 1
}
]
},
{
"slug": "fip-groove",
"name": "FIP Groove",
"category": "fip",
"country": "FR",
"homepage": "https://www.radiofrance.fr/fip/radio-groove",
"genres": [
"funk",
"soul",
"disco"
],
"description": "Funk, soul, disco grooves.",
"streams": [
{
"url": "https://icecast.radiofrance.fr/fipgroove-hifi.aac",
"format": "aac",
"bitrate": 192,
"label": "HiFi AAC",
"priority": 0
},
{
"url": "https://icecast.radiofrance.fr/fipgroove-midfi.mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 1
}
]
},
{
"slug": "fip-electro",
"name": "FIP Electro",
"category": "fip",
"country": "FR",
"homepage": "https://www.radiofrance.fr/fip/radio-electro",
"genres": [
"electronic"
],
"description": "Electronic channel from FIP.",
"streams": [
{
"url": "https://icecast.radiofrance.fr/fipelectro-hifi.aac",
"format": "aac",
"bitrate": 192,
"label": "HiFi AAC",
"priority": 0
},
{
"url": "https://icecast.radiofrance.fr/fipelectro-midfi.mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 1
}
]
},
{
"slug": "fip-nouveautes",
"name": "FIP Nouveautés",
"category": "fip",
"country": "FR",
"homepage": "https://www.radiofrance.fr/fip/radio-nouveautes",
"genres": [
"new",
"eclectic"
],
"description": "FIP's new releases channel.",
"streams": [
{
"url": "https://icecast.radiofrance.fr/fipnouveautes-hifi.aac",
"format": "aac",
"bitrate": 192,
"label": "HiFi AAC",
"priority": 0
},
{
"url": "https://icecast.radiofrance.fr/fipnouveautes-midfi.mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 1
}
]
},
{
"slug": "fip-metal",
"name": "FIP Métal",
"category": "fip",
"country": "FR",
"homepage": "https://www.radiofrance.fr/fip/radio-metal",
"genres": [
"metal"
],
"description": "Metal channel from FIP.",
"streams": [
{
"url": "https://icecast.radiofrance.fr/fipmetal-hifi.aac",
"format": "aac",
"bitrate": 192,
"label": "HiFi AAC",
"priority": 0
},
{
"url": "https://icecast.radiofrance.fr/fipmetal-midfi.mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 1
}
]
},
{
"slug": "fip-hiphop",
"name": "FIP Hip-Hop",
"category": "fip",
"country": "FR",
"homepage": "https://www.radiofrance.fr/fip/radio-hip-hop",
"genres": [
"hip-hop"
],
"description": "Hip-hop channel from FIP.",
"streams": [
{
"url": "https://icecast.radiofrance.fr/fiphiphop-hifi.aac",
"format": "aac",
"bitrate": 192,
"label": "HiFi AAC",
"priority": 0
},
{
"url": "https://icecast.radiofrance.fr/fiphiphop-midfi.mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 1
}
]
},
{
"slug": "fip-monde",
"name": "FIP Monde",
"category": "fip",
"country": "FR",
"homepage": "https://www.radiofrance.fr/fip/radio-monde",
"genres": [
"world"
],
"description": "World music channel from FIP.",
"streams": [
{
"url": "https://icecast.radiofrance.fr/fipworld-hifi.aac",
"format": "aac",
"bitrate": 192,
"label": "HiFi AAC",
"priority": 0
},
{
"url": "https://icecast.radiofrance.fr/fipworld-midfi.mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 1
}
]
},
{
"slug": "fip-sacre-francais",
"name": "FIP Sacré Français",
"category": "fip",
"country": "FR",
"homepage": "https://www.radiofrance.fr/fip/radio-sacre-francais",
"genres": [
"french",
"chanson"
],
"description": "French-language curated by FIP.",
"streams": [
{
"url": "https://icecast.radiofrance.fr/fipsacrefrancais-hifi.aac",
"format": "aac",
"bitrate": 192,
"label": "HiFi AAC",
"priority": 0
}
]
},
{
"slug": "somafm-deep-space-one",
"name": "SomaFM — Deep Space One",
"category": "soma",
"country": "US",
"homepage": "https://somafm.com/deepspaceone/",
"genres": [
"ambient",
"space"
],
"description": "Deep ambient electronic, experimental and space music.",
"streams": [
{
"url": "https://ice1.somafm.com/deepspaceone-128-mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "somafm-secret-agent",
"name": "SomaFM — Secret Agent",
"category": "soma",
"country": "US",
"homepage": "https://somafm.com/secretagent/",
"genres": [
"lounge",
"exotica",
"spy"
],
"description": "The soundtrack for your stylish, mysterious dangerous life.",
"streams": [
{
"url": "https://ice1.somafm.com/secretagent-128-mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "somafm-defcon-radio",
"name": "SomaFM — DEF CON Radio",
"category": "soma",
"country": "US",
"homepage": "https://somafm.com/defcon/",
"genres": [
"electronic",
"industrial"
],
"description": "Music for hackers. Music for the underground.",
"streams": [
{
"url": "https://ice1.somafm.com/defcon-128-mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "somafm-beat-blender",
"name": "SomaFM — Beat Blender",
"category": "soma",
"country": "US",
"homepage": "https://somafm.com/beatblender/",
"genres": [
"downtempo",
"house"
],
"description": "A late-night blend of deep-house and downtempo chill.",
"streams": [
{
"url": "https://ice1.somafm.com/beatblender-128-mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "somafm-suburbs-of-goa",
"name": "SomaFM — Suburbs of Goa",
"category": "soma",
"country": "US",
"homepage": "https://somafm.com/suburbsofgoa/",
"genres": [
"world",
"ethnic",
"electronic"
],
"description": "Desi-influenced ambient electronica.",
"streams": [
{
"url": "https://ice1.somafm.com/suburbsofgoa-128-mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "somafm-underground-80s",
"name": "SomaFM — Underground 80s",
"category": "soma",
"country": "US",
"homepage": "https://somafm.com/u80s/",
"genres": [
"80s",
"new-wave",
"post-punk"
],
"description": "Early 80s UK Synthpop and a bit of New Wave.",
"streams": [
{
"url": "https://ice1.somafm.com/u80s-128-mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "somafm-lush",
"name": "SomaFM — Lush",
"category": "soma",
"country": "US",
"homepage": "https://somafm.com/lush/",
"genres": [
"downtempo",
"vocal"
],
"description": "Sensuous and mellow vocals, mostly female, with an electronic influence.",
"streams": [
{
"url": "https://ice1.somafm.com/lush-128-mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "somafm-mission-control",
"name": "SomaFM — Mission Control",
"category": "soma",
"country": "US",
"homepage": "https://somafm.com/missioncontrol/",
"genres": [
"space",
"ambient"
],
"description": "Ambient electronica + space mission audio.",
"streams": [
{
"url": "https://ice1.somafm.com/missioncontrol-128-mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "somafm-boot-liquor",
"name": "SomaFM — Boot Liquor",
"category": "soma",
"country": "US",
"homepage": "https://somafm.com/bootliquor/",
"genres": [
"alt-country",
"americana"
],
"description": "Americana roots music for true cowpokes.",
"streams": [
{
"url": "https://ice1.somafm.com/bootliquor-128-mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "9128-live",
"name": "9128.live",
"category": "ambient",
"country": "GB",
"homepage": "https://9128.live/",
"genres": [
"ambient",
"drone",
"experimental"
],
"description": "Ambient and drone curated by A Strangely Isolated Place.",
"streams": [
{
"url": "https://streams.radio.co/s0aa1e6f4a/low",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
},
{
"url": "https://streams.radio.co/s0aa1e6f4a/listen",
"format": "mp3",
"bitrate": 320,
"label": "MP3 320",
"priority": 1
}
]
},
{
"slug": "ambient-sleeping-pill",
"name": "Ambient Sleeping Pill",
"category": "ambient",
"country": "US",
"homepage": "https://stereoscenic.com/",
"genres": [
"ambient"
],
"description": "Beat-free stream for sleep or focus.",
"streams": [
{
"url": "https://radio.stereoscenic.com/asp-h",
"format": "aac",
"bitrate": 64,
"label": "AAC 64",
"priority": 0
}
]
},
{
"slug": "echoes-cryosleep",
"name": "Echoes of Bluemars — Cryosleep",
"category": "ambient",
"country": "US",
"homepage": "https://echoesofbluemars.org/",
"genres": [
"ambient",
"drone"
],
"description": "Zero-beat ambient drone and drift music.",
"streams": [
{
"url": "https://streams.echoesofbluemars.org:8000/cryosleep",
"format": "ogg",
"bitrate": 96,
"label": "OGG 96",
"priority": 0
}
]
},
{
"slug": "freecodecamp-radio",
"name": "freeCodeCamp Code Radio",
"category": "ambient",
"country": "US",
"homepage": "https://www.freecodecamp.org/news/code-radio/",
"genres": [
"lo-fi",
"instrumental"
],
"description": "24/7 instrumentals for focus.",
"streams": [
{
"url": "https://coderadio-admin-v2.freecodecamp.org/listen/coderadio/radio.mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "rinse-fm",
"name": "Rinse FM",
"category": "electronic",
"country": "GB",
"homepage": "https://rinse.fm/",
"genres": [
"dance",
"underground",
"uk"
],
"description": "London underground dance music.",
"streams": [
{
"url": "https://stream.rcs.revma.com/an1ugyygzk8uv",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "refuge-worldwide",
"name": "Refuge Worldwide",
"category": "electronic",
"country": "DE",
"homepage": "https://refugeworldwide.com/",
"genres": [
"dance",
"techno"
],
"description": "Berlin-based station for dance music and techno.",
"streams": [
{
"url": "https://streaming.radio.co/s3699c5e49/listen",
"format": "mp3",
"bitrate": 192,
"label": "MP3 192",
"priority": 0
}
]
},
{
"slug": "cashmere-radio",
"name": "Cashmere Radio",
"category": "electronic",
"country": "DE",
"homepage": "https://cashmereradio.com/",
"genres": [
"experimental",
"electronic"
],
"description": "Berlin-based experimental electronic.",
"streams": [
{
"url": "https://cashmere-radio.radiocult.fm/stream",
"format": "mp3",
"bitrate": 192,
"label": "MP3 192",
"priority": 0
}
]
},
{
"slug": "nightride-fm",
"name": "Nightride FM",
"category": "electronic",
"country": "FI",
"homepage": "https://nightride.fm/",
"genres": [
"synthwave",
"darksynth",
"retrowave"
],
"description": "Synthwave, darksynth, and retrowave.",
"streams": [
{
"url": "https://stream.nightride.fm/nightride.m4a",
"format": "aac",
"bitrate": 256,
"label": "AAC 256",
"priority": 0
}
]
},
{
"slug": "dublin-digital-radio",
"name": "Dublin Digital Radio",
"category": "electronic",
"country": "IE",
"homepage": "https://listen.dublindigitalradio.com/",
"genres": [
"electronic",
"experimental"
],
"description": "Indie and experimental electronic from Dublin.",
"streams": [
{
"url": "https://dublin-digital-radio.radiocult.fm/stream",
"format": "mp3",
"bitrate": 256,
"label": "MP3 256",
"priority": 0
}
]
},
{
"slug": "lyl-radio",
"name": "LYL Radio",
"category": "electronic",
"country": "FR",
"homepage": "https://lyl.live/",
"genres": [
"experimental"
],
"description": "Experimental radio and sonic art from Lyon.",
"streams": [
{
"url": "https://icecast.lyl.live/live",
"format": "mp3",
"bitrate": 192,
"label": "MP3 192",
"priority": 0
}
]
},
{
"slug": "soho-radio",
"name": "Soho Radio",
"category": "underground",
"country": "GB",
"homepage": "https://sohoradiolondon.com/",
"genres": [
"eclectic",
"underground"
],
"description": "Culture and music from London and NYC.",
"streams": [
{
"url": "https://sohoradiomusic.doughunt.co.uk:8010/128mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "noods-radio",
"name": "Noods Radio",
"category": "underground",
"country": "GB",
"homepage": "https://noodsradio.com/",
"genres": [
"eclectic",
"underground"
],
"description": "Independent radio for music collectors from Bristol.",
"streams": [
{
"url": "https://noods-radio.radiocult.fm/stream",
"format": "mp3",
"bitrate": 192,
"label": "MP3 192",
"priority": 0
}
]
},
{
"slug": "resonance-fm",
"name": "Resonance 104.4 FM",
"category": "underground",
"country": "GB",
"homepage": "https://www.resonancefm.com/",
"genres": [
"arts",
"experimental"
],
"description": "Cultural programming and art from London.",
"streams": [
{
"url": "http://stream.resonance.fm:8000/resonance",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "dandelion-radio",
"name": "Dandelion Radio",
"category": "underground",
"country": "GB",
"homepage": "https://dandelionradio.com/",
"genres": [
"eclectic",
"freeform"
],
"description": "Internet radio inspired by John Peel.",
"streams": [
{
"url": "http://stream.dandelionradio.com:9414/",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "radio-meuh",
"name": "Radio Meuh",
"category": "underground",
"country": "FR",
"homepage": "https://www.radiomeuh.com/",
"genres": [
"electronic",
"soul",
"funk"
],
"description": "Electronic, soul, and funk from the French Alps.",
"streams": [
{
"url": "https://radiomeuh.ice.infomaniak.ch/radiomeuh-128.mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "oroko-radio",
"name": "Oroko Radio",
"category": "underground",
"country": "GH",
"homepage": "https://oroko.live/",
"genres": [
"afro",
"indie",
"soul"
],
"description": "Afro indie, folk, and soul from Accra, Ghana.",
"streams": [
{
"url": "https://oroko-radio.radiocult.fm/stream",
"format": "mp3",
"bitrate": 320,
"label": "MP3 320",
"priority": 0
}
]
},
{
"slug": "radio-al-hara",
"name": "Radio Al-Hara",
"category": "underground",
"country": "PS",
"homepage": "https://www.radioalhara.net/",
"genres": [
"experimental"
],
"description": "Underground Palestinian radio; experimental beats and talk.",
"streams": [
{
"url": "https://radio-alhara.radiocult.fm/stream",
"format": "mp3",
"bitrate": 192,
"label": "MP3 192",
"priority": 0
}
]
},
{
"slug": "wfmu-rock-soul",
"name": "WFMU — Rock 'n' Soul Ichiban",
"category": "underground",
"country": "US",
"homepage": "https://wfmu.org/",
"genres": [
"rock",
"soul"
],
"description": "WFMU stream for rock, R&B, and soul.",
"streams": [
{
"url": "https://wfmu.org/wfmu_rock.pls",
"format": "pls",
"label": "PLS",
"priority": 0
}
]
},
{
"slug": "wfmu-sheena",
"name": "WFMU — Sheena's Jungle Room",
"category": "underground",
"country": "US",
"homepage": "https://wfmu.org/",
"genres": [
"garage",
"surf",
"rockabilly"
],
"description": "WFMU stream for garage, surf, and rockabilly.",
"streams": [
{
"url": "https://wfmu.org/wfmu_sheena.pls",
"format": "pls",
"label": "PLS",
"priority": 0
}
]
},
{
"slug": "jazz24",
"name": "Jazz24",
"category": "jazz",
"country": "US",
"homepage": "https://www.jazz24.org/",
"genres": [
"jazz"
],
"description": "24/7 jazz from Seattle (KNKX).",
"streams": [
{
"url": "https://knkx-live-a.edge.audiocdn.com/6285_256k",
"format": "aac",
"bitrate": 256,
"label": "AAC 256",
"priority": 0
},
{
"url": "https://knkx-live-a.edge.audiocdn.com/6285_128k",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 1
}
]
},
{
"slug": "wbgo",
"name": "WBGO 88.3 — Jazz",
"category": "jazz",
"country": "US",
"homepage": "https://wbgo.org/",
"genres": [
"jazz",
"blues"
],
"description": "Jazz and blues from Newark/New York.",
"streams": [
{
"url": "https://ais-sa8.cdnstream1.com/3629_128.mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "tsf-jazz",
"name": "TSF Jazz",
"category": "jazz",
"country": "FR",
"homepage": "https://www.tsfjazz.com/",
"genres": [
"jazz"
],
"description": "Jazz and talk from Paris.",
"streams": [
{
"url": "https://tsfjazz.ice.infomaniak.ch/tsfjazz-high.mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "linn-jazz",
"name": "Linn Jazz",
"category": "jazz",
"country": "GB",
"homepage": "https://www.linn.co.uk/linn-radio",
"genres": [
"jazz"
],
"description": "Jazz classics and originals from Linn Records.",
"streams": [
{
"url": "http://radio.linn.co.uk:8000/autodj",
"format": "mp3",
"bitrate": 320,
"label": "MP3 320",
"priority": 0
}
]
},
{
"slug": "linn-classical",
"name": "Linn Classical",
"category": "classical",
"country": "GB",
"homepage": "https://www.linn.co.uk/linn-radio",
"genres": [
"classical"
],
"description": "Classical recordings from Linn Records.",
"streams": [
{
"url": "http://radio.linn.co.uk:8004/autodj",
"format": "mp3",
"bitrate": 320,
"label": "MP3 320",
"priority": 0
}
]
},
{
"slug": "radio-suisse-classique",
"name": "Radio Suisse Classique",
"category": "classical",
"country": "CH",
"homepage": "https://www.radioswissclassic.ch/en",
"genres": [
"classical"
],
"description": "Swiss public radio for classical and opera.",
"streams": [
{
"url": "https://stream.srg-ssr.ch/m/rsc_de/mp3_128",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "wcrb-classical",
"name": "WCRB 99.5 Classical",
"category": "classical",
"country": "US",
"homepage": "https://www.classicalwcrb.org/",
"genres": [
"classical"
],
"description": "Boston classical; features the Boston Symphony Orchestra.",
"streams": [
{
"url": "https://wgbh-live.streamguys1.com/classical-hi",
"format": "mp3",
"bitrate": 192,
"label": "MP3 192",
"priority": 0
}
]
},
{
"slug": "drdicks-dub-shack",
"name": "Dr. Dick's Dub Shack",
"category": "reggae",
"country": "BM",
"homepage": "https://drdicksdubshack.com/",
"genres": [
"dub",
"reggae",
"roots"
],
"description": "Deep dub and roots from Bermuda.",
"streams": [
{
"url": "http://streamer.radio.co/s0635c8b0d/listen",
"format": "mp3",
"bitrate": 192,
"label": "MP3 192",
"priority": 0
}
]
},
{
"slug": "alpha-boys-school",
"name": "Alpha Boys School Radio",
"category": "reggae",
"country": "JM",
"homepage": "https://alphaboysschoolradio.com/",
"genres": [
"ska",
"rocksteady",
"reggae"
],
"description": "Ska and rocksteady from Kingston, Jamaica.",
"streams": [
{
"url": "http://alphaboys-live.streamguys1.com/alphaboys.mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "radio-nova",
"name": "Radio Nova",
"category": "world",
"country": "FR",
"homepage": "https://www.nova.fr/",
"genres": [
"world",
"jazz",
"hip-hop"
],
"description": "French station for global sounds, jazz, and hip-hop.",
"streams": [
{
"url": "https://novazz.ice.infomaniak.ch/novazz-128.mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 0
}
]
},
{
"slug": "rfi-monde",
"name": "RFI Monde",
"category": "world",
"country": "FR",
"homepage": "https://www.rfi.fr/",
"genres": [
"news",
"world"
],
"description": "Global news and music from France in French.",
"streams": [
{
"url": "http://live02.rfi.fr/rfimonde-96k.mp3",
"format": "mp3",
"bitrate": 96,
"label": "MP3 96",
"priority": 0
}
]
},
{
"slug": "radio-france-inter",
"name": "France Inter",
"category": "world",
"country": "FR",
"homepage": "https://www.radiofrance.fr/franceinter",
"genres": [
"news",
"talk"
],
"description": "French public talk radio.",
"streams": [
{
"url": "https://icecast.radiofrance.fr/franceinter-hifi.aac",
"format": "aac",
"bitrate": 192,
"label": "HiFi AAC",
"priority": 0
},
{
"url": "https://icecast.radiofrance.fr/franceinter-midfi.mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 1
}
]
},
{
"slug": "france-musique",
"name": "France Musique",
"category": "classical",
"country": "FR",
"homepage": "https://www.radiofrance.fr/francemusique",
"genres": [
"classical",
"jazz"
],
"description": "French classical and jazz public radio.",
"streams": [
{
"url": "https://icecast.radiofrance.fr/francemusique-hifi.aac",
"format": "aac",
"bitrate": 192,
"label": "HiFi AAC",
"priority": 0
}
]
},
{
"slug": "france-culture",
"name": "France Culture",
"category": "world",
"country": "FR",
"homepage": "https://www.radiofrance.fr/franceculture",
"genres": [
"culture",
"talk"
],
"description": "Culture, ideas, talk in French.",
"streams": [
{
"url": "https://icecast.radiofrance.fr/franceculture-hifi.aac",
"format": "aac",
"bitrate": 192,
"label": "HiFi AAC",
"priority": 0
},
{
"url": "https://icecast.radiofrance.fr/franceculture-midfi.mp3",
"format": "mp3",
"bitrate": 128,
"label": "MP3 128",
"priority": 1
}
]
}
]