A modern desktop Internet Radio application built with Python, CustomTkinter, and VLC. The application provides live radio streaming, station discovery, real-time metadata updates, interactive world-map navigation, and a modular architecture designed for future expansion.
- Problem & Solution
- Features
- Main Window Interface
- Feature Gallery
- Project Structure
- Installation
- Usage
- Tech Stack
- Testing
- Roadmap Features
- Notes
Traditional desktop radio applications are often cluttered, outdated, or difficult to navigate. Discovering stations across different countries can require multiple websites and inconsistent user experiences.
Internet Radio Player provides a modern Python desktop application that combines live streaming, station discovery, interactive mapping, and metadata visualisation into a single unified interface.
- Global Radio Streaming: Listen to stations from multiple countries through a unified interface.
- Interactive Station Discovery: Browse and select stations directly from an interactive world map.
- Live Metadata: Display currently playing track and artist information when available.
- Smart Search: Instantly filter stations by name.
- Playback Controls: Integrated volume management and stream controls.
- Country Visualisation: View stations alongside geographic context and country identifiers.
- Modular Architecture: Separation of UI, player, and data layers for maintainability.
| Now Playing Card | Station List | Search Bar | UI Map |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
internet_radio/
├── app.py # Main entry point
├── requirements.txt # Python dependencies
├── gui/ # CustomTkinter UI Components
│ ├── main_window.py
│ ├── now_playing.py
│ ├── station_list.py
│ ├── controls.py
│ ├── world_clock.py
│ ├── world_map.py
├── player/ # Media Engine & Data
│ ├── radio_player.py
│ └── stations.py
│ └── stations.json
└── assets/ # Media & Icons
| └── icons/
| └── map/
| └── screenshots/
├── tests/ # Pytest suite
- Clone the repository and install:
git clone https://github.com/reory/Internet_radio_python.git
cd Internet_radio_python- Install dependencies:
pip install -r requirements.txtImportant
This app requires the VLC media player (64-bit) installed on your system to function. DOWNLOAD VLC here here
This project requires both the backend and frontend to be running simultaneously.
- Run the app:
python app.py- Python
- CustomTkinter
- python-vlc
- Pytest
- JSON
- PIL/Pillow
The project includes a growing Pytest suite covering:
- Station search functionality
- Radio playback logic
- Station list management
- Data validation
Run tests with:
pytestI am currently working on scaling this project. Planned features include:
- Added Interactive Map for station discovery.
- Favourite stations support
- Radio Browser API integration
- DuckDB station database
- Graphic equalizer
- Stream recording
- Recently played stations
- Version 1.1 Added Interactive Map for station discovery.
Built by Roy Peters — Click here for contact info😁




