Skip to content

Repository files navigation

OpenRadio-IN

A community-driven collection of verified Indian online radio stations with a progressive web app, Chromecast support, and automatically generated playlists for VLC, Kodi, Home Assistant, and other compatible players.

PWA: https://kedharnadh.github.io/OpenRadio-IN/

GitHub GitHub stars GitHub issues GitHub last commit


Features

  • Indian Radio Stations (AIR, FM, News, Devotional, Classical, Internet Radio)
  • Progressive Web App (installable, offline-capable)
  • Google Cast / Chromecast support
  • HLS proxy worker for AIR streams on Cast devices
  • Search, filter, and favorites
  • Recently played stations
  • Now-playing view with station logo and metadata
  • Volume control with mute toggle
  • Sleep timer
  • Station sharing (Web Share API)
  • Dark/light theme toggle
  • Audio equalizer (bass/treble)
  • Keyboard shortcuts (Space = play/pause, arrows = prev/next)
  • Automatically generated playlists
  • JSON-based station database
  • Python build system
  • GitHub Actions automation

Supported Players

OpenRadio-IN playlists work with:

  • VLC Media Player
  • Kodi
  • Sparkle TV
  • TiviMate
  • OTT Navigator
  • IPTV Pro
  • Home Assistant
  • Jellyfin
  • Emby
  • Plex (via IPTV plugins)

Repository Structure

OpenRadio-IN
│
├── database/
│   └── stations.json
│
├── build/
│   ├── generate_playlists.py
│   ├── validate_database.py
│   ├── check_streams.py
│   └── generate_stats.py
│
├── playlists/
│   ├── all.m3u
│   ├── telugu.m3u
│   ├── air.m3u
│   └── ...
│
├── website/
│   ├── index.html
│   ├── assets/js/app.js
│   ├── assets/css/style.css
│   ├── hls-proxy-worker.js
│   ├── cast-receiver.html
│   ├── manifest.webmanifest
│   ├── sw.js
│   └── icons/
│
├── docs/
│
└── .github/

Available Playlists

Playlist Description
all.m3u Every station
telugu.m3u Telugu stations
air.m3u All India Radio stations
fm.m3u FM stations
devotional.m3u Devotional stations
news.m3u News stations

More playlists will be added as the database grows.


Database Format

Every station is stored in database/stations.json.

{
  "id": "air_tirupati",
  "name": "AIR Tirupati",
  "language": "Telugu",
  "country": "India",
  "categories": ["AIR", "News"],
  "logo": "https://example.com/logo.png",
  "streams": [
    {
      "url": "https://example.com/playlist.m3u8",
      "codec": "HLS",
      "priority": 1
    }
  ]
}

Build Playlists

Generate all playlists:

python build/generate_playlists.py

Validate the database:

python build/validate_database.py

Generate statistics:

python build/generate_stats.py

Website and PWA

The repository includes an installable, offline-capable radio directory in website/. It lists every station, filters by language or category, and supports instant search and browser playback.

The GitHub Actions workflow at .github/workflows/deploy-pages.yml deploys it to GitHub Pages whenever main is pushed. In the repository settings, set Pages -> Build and deployment -> Source to GitHub Actions.

The workflow copies database/stations.json into the published site, so station updates are included automatically in every deployment.

PWA Features

  • Installable (manifest + service worker)
  • Offline app shell and station list caching
  • Google Cast / Chromecast support for all stations
  • HLS proxy worker for AIR streams on Cast devices
  • Dark and light themes
  • Volume control with mute toggle
  • Sleep timer (15/30/60 min)
  • Audio equalizer (bass/treble shelving filters)
  • Station sharing via Web Share API
  • Keyboard shortcuts: Space = play/pause, Arrow keys = prev/next
  • Recently played stations tracking

HLS Proxy (for Chromecast)

AIR stations use HLS streams from radio.wavespb.com, which blocks Google Cast devices. The proxy worker at website/hls-proxy-worker.js routes these streams through Cloudflare Workers so they play correctly on Cast devices.

Deploy with:

cd website
npx wrangler deploy

Contributing

Contributions are welcome! You can help by:

  • Adding new radio stations
  • Updating broken streams
  • Improving metadata
  • Reporting issues
  • Improving documentation

Please ensure every submitted stream is publicly accessible and legal to redistribute.


Version History

v1.0.0

  • Chromecast support with HLS proxy worker
  • Now-playing view with station artwork
  • Volume control, mute toggle
  • Dark/light theme toggle
  • Sleep timer
  • Audio equalizer (bass/treble)
  • Station sharing via Web Share API
  • Keyboard shortcuts
  • Recently played stations
  • PNG icons for PWA install
  • Offline station data caching via service worker

v0.6

  • Tamil, Kannada, Malayalam, Hindi stations

v0.5

  • Searchable website
  • Embedded web player
  • Stream validation
  • Statistics generation

License

MIT License


Acknowledgements

Thanks to:

  • All India Radio (Akashvani)
  • Public internet radio broadcasters
  • Open source contributors
  • Everyone who helps keep the station database up to date

Support the Project

If you find OpenRadio-IN useful:

  • Star this repository
  • Report broken streams
  • Submit new stations
  • Contribute improvements

Every contribution helps make OpenRadio-IN a better resource for everyone.

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages