A simple internet radio player written in Python with a graphical user interface. It plays any audio stream (HTTP/HTTPS, RTSP, RTMP, MMS) and ships with Radio Famka as the default station. The application keeps running in the background as a system tray icon, so playback continues without occupying space on the taskbar.
- Play any internet radio stream; Radio Famka is preconfigured
- Station list: switch, add, edit and remove stations from the station menu (click the station name) or the tray menu
- Stations added without a name pick up the name broadcast by the stream (icy-name)
- Connection status (stopped, connecting, live, offline) with automatic reconnect
- "Now playing" title and artist from the stream metadata
- Volume slider with mute, mouse wheel support and remembered settings
- Keyboard shortcuts
- Audio spectrum visualizer driven by the actual sound (falls back to an animation without numpy/sounddevice)
- System tray icon with play/pause and station selection
- Build to a single
.exefile with no external dependencies
| Library | Purpose |
|---|---|
| Tkinter | Graphical interface of the application window |
| python-vlc | Audio stream handling via the libVLC library |
| Pillow | Anti-aliased interface graphics and the tray icon |
| numpy + sounddevice | Audio output with spectrum analysis for the visualizer (optional) |
| pystray | System tray icon and context menu |
| PyInstaller | Compilation to a standalone .exe file |
pip install -r requirements.txt
python radio_player.pyOpen a specific stream directly (it is added to the station list):
python radio_player.py https://example.com/stream.mp3The libVLC library is required. On Linux and macOS, install VLC from your package manager. On Windows, copy
libvlc.dll,libvlccore.dlland thepluginsfolder from your VLC installation (e.g.C:\Program Files\VideoLAN\VLC) into the project directory; VLC must match the architecture of Python (usually 64-bit). These files are not stored in the repository.
| Key | Action |
|---|---|
| Space / Enter | Play / pause |
| ↑ / ↓, mouse wheel | Volume |
| M | Mute |
| Ctrl+Q | Quit |
Closing the window hides the player to the system tray; use the tray menu to restore it or quit.
Stations, the selected station, volume and mute state are saved to:
- Windows:
%APPDATA%\RadioPlayer\config.json - Linux:
~/.config/radio-player/config.json
With the VLC files copied as described in Running:
pip install pyinstaller
pyinstaller radio_player.specThe finished radio_player.exe file will be located in the dist/ directory.
| Path | Contents |
|---|---|
radio_player.py |
Entry point |
radioplayer/app.py |
Main window, playback, stations and tray |
radioplayer/audio.py |
Audio output with spectrum analysis |
radioplayer/graphics.py |
Anti-aliased images for the interface |
radioplayer/dialogs.py |
Add/edit station dialog |
radioplayer/config.py |
Paths, settings and station helpers |
radioplayer/theme.py |
Colors and layout |
radioplayer/vlc_loader.py |
Loading libVLC |