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.

| 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/
git clone https://github.com/reory/Internet_radio_python.git
cd Internet_radio_python
pip install -r requirements.txt
[!IMPORTANT] 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.
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:
pytest
I 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.
Built by Roy Peters β Click here for contact infoπ