Skip to content

A sleek CustomTkinter radio app powered by VLC with search, flags and live metadata.

License

Notifications You must be signed in to change notification settings

reory/Internet_radio_python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python License Repo Size Last Commit Stars

🎵 Internet Radio Player

Powered by Python, CustomTkinter, and VLC

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.


🚀 Features

  • 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.

🖥️ Main Window interface

Main Window

🎵 Feature Gallery

Now Playing Card Station List Search Bar
Now Playing Station List Search Bar

🧩 Project Structure

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/

📦 Installation

  1. Clone the repository and install:
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


Usage

This project requires both the backend and frontend to be running simultaneously.

  1. Run the app:
     python app.py

Testing🚦

The project includes a comprehensive suite of 4 tests covering radio searches, radio player, and the radio UI logic.

To run the tests:

pytest

🗺️ Future Plans & Roadmap

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.


🤝 Contributing

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.


Notes

  • Version 1.0 Initial release.
  • 4 passing unit tests.

Built by Roy PetersClick here for contact info😁