Skip to content

About

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

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

26 Commits

Folders and files

Repository files navigation

🎵 Internet Radio Player

Last Commit License Repo Size Python CustomTkinter VLC

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.


📑 Table of Contents


🕵🏼‍♀️ The Problem & Solution

🕵🏼‍♀️ Problem

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.

✅ Solution

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.


🚀 Features

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

📸 Screenshots

🖥️ Main Window interface

Main Window

🎵 Feature Gallery

Now Playing Card Station List Search Bar UI Map
Now Playing Station List Search Bar UI Map Country Station

📁 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
│   ├── 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

📦 Installation

  1. Clone the repository and install:
git clone https://github.com/reory/Internet_radio_python.git
cd Internet_radio_python
  1. Install dependencies:
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

🛠️ Tech Stack

  • Python
  • CustomTkinter
  • python-vlc
  • Pytest
  • JSON
  • PIL/Pillow

Testing🚦

The project includes a growing Pytest suite covering:

  • Station search functionality
  • Radio playback logic
  • Station list management
  • Data validation

Run tests with:

pytest

🗺️ Roadmap Features

I 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

📒 Notes

  • Version 1.1 Added Interactive Map for station discovery.

Built by Roy Peters — Click here for contact info😁

About

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

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages