A modern, modular Internet Radio application built with Python, CustomTkinter, and python-vlc. This project features a clean UI, live metadata updates, and a modular architecture designed for easy expansion.
- Global Streaming: Play hundreds of online radio stations.
- Live Metadata: Real-time updates for track titles and artist info.
- Smart Search: Instant station filtering via the search bar.
- Visual Cues: Country flags and "Now Playing" live indicators.
- User Control: Integrated volume slider and stop functionality.
- Modular Design: Clean separation between GUI components and player logic.
| Now Playing Card | Station List | Search Bar |
|---|---|---|
![]() |
![]() |
![]() |
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
│ └── search_bar.py
├── player/ # Media Engine & Data
│ ├── radio_player.py
│ └── stations.json
└── assets/ # Media & Icons
└── icons/
- Clone the repository and install:
git clone https://github.com/reory/Internet_radio_python.git
cd Internet_radio_python
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
The project includes a comprehensive suite of 4 tests covering radio searches, radio player, and the radio UI logic.
To run the tests:
pytestI am currently working on scaling this project. Planned features include:
-
DuckDB Backend: Migrating stations.json to a high-performance database.
-
Geospatial Discovery: Interactive map for station selection.
-
Graphic Equalizer: Advanced audio frequency control.
Contributions, ideas, and feedback are welcome! This is my first public project, so constructive feedback is especially appreciated as the app continues to grow.
-
Fork the repository.
-
Create a new branch (git checkout -b feature/YourFeature).
-
Commit your changes.
-
Submit a Pull Request.
- Version 1.0 Initial release.
- 4 passing unit tests.
Built by Roy Peters — Click here for contact info😁



