Skip to content

buzzqw/radioplayer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

15 Commits
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽต Radio Player M3U

Python License Platform MPV Rich

Lettore di stazioni radio da terminale, cross-platform (Linux ยท macOS ยท Windows), con interfaccia TUI colorata basata su Rich, metadati in tempo reale, registrazione stream e ricerca integrata su RadioBrowser.info.


๐Ÿ“ธ Anteprima

Schermata principale

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ ๐ŸŽต RADIO PLAYER M3U    โฐ 14:32:18    00:47    ๐Ÿ”Š Volume: 80%  ๐Ÿ“ โœ—  ๐Ÿ”” โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ Status โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ โ–ถ  IN RIPRODUZIONE  โ”‚  ๐Ÿ“ก Radio Deejay                                  โ”‚
โ”‚ ๐ŸŽค The Weeknd  ๐ŸŽผ Blinding Lights  [01:23]                               โ”‚
โ”‚ ๐Ÿ”Š 128 kbps โ€ข AAC โ€ข ๐Ÿ“ฆ OK                                                โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ ๐Ÿ“ป Stazioni (9 totali) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚       1  IT::Venice Radio                                                โ”‚
โ”‚       2  IT::Radio24                                                     โ”‚
โ”‚  ๐Ÿ‘‰โ–ถ๏ธ  3  IT::Radio Deejay                                               โ”‚
โ”‚       4  IT::RDS                                                         โ”‚
โ”‚       5  IT::Radio Rai1                                                  โ”‚
โ”‚       6  IT::Radio Rai2                                                  โ”‚
โ”‚       7  IT::Radio Rai3                                                  โ”‚
โ”‚       8  IT::Radio Rai5 Classica                                         โ”‚
โ”‚       9  IT::Radio Classica CH                                           โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ ๐ŸŽฎ Controlli โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ โ†‘/โ†“ Seleziona  p/Space Play/Pausa  +/= Vol+  -/_ Vol-  m Muto  b Sfoglia โ”‚
โ”‚ r Rec  l Log  t Notifiche  h Cronologia  s Salva  1-9+โ†ต Vai a #  q Esci  โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

Ricerca RadioBrowser.info (tasto b)

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ ๐ŸŽต RADIO PLAYER M3U    โฐ 14:33:05    01:34    ๐Ÿ”Š Volume: 80%  ๐Ÿ“ โœ—  ๐Ÿ””  โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ ๐Ÿ” RadioBrowser.info  โœ… 20 stazioni trovate โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ radio italia_                                                            โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ Risultati (20) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚    Nome                           Paese   kbps  Codec  โ˜… Voti            โ”‚
โ”‚ ๐Ÿ‘‰ Virgin Radio Italia            Italy    128  MP3    16116             โ”‚
โ”‚    Radio Italia Solo Musica       Italy      0  MP3     9276             โ”‚
โ”‚    CLASSIC HITS RADIO Italia      Italy    192  AAC     5844             โ”‚
โ”‚    NEW HITS RADIO Italia          Italy    320  MP3     3849             โ”‚
โ”‚    Radio Italia Anni 60           Italy     64  MP3     2998             โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ ๐ŸŽฎ Comandi ricerca โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ โ†‘/โ†“ Naviga  โ†ต Aggiungi a M3U  p Ascolta anteprima  โŒซ Cancella  Esc Torna โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

โœจ Caratteristiche

Funzionalitร 
๐Ÿ“ป Riproduzione di qualsiasi stream radio supportato da MPV (MP3, AAC, OGG, HLSโ€ฆ)
๐Ÿ–ฅ๏ธ Interfaccia TUI con 10 stazioni sempre visibili, nessuno scroll necessario
๐ŸŽต Metadati automatici via ICY: artista, titolo del brano e timer in tempo reale
๐Ÿ“Š Statistiche live: bitrate, codec e stato del buffer
๐Ÿ”Š Controllo volume istantaneo senza interrompere la riproduzione
๐Ÿ” Ricerca su RadioBrowser.info โ€” 40.000+ stazioni, ordinabili per popolaritร 
โž• Aggiunta stazioni al M3U da RadioBrowser con controllo duplicati automatico
๐Ÿ‘‚ Anteprima di una stazione trovata prima di salvarla
๐Ÿ”ด Registrazione dello stream in MP3 tramite ffmpeg
๐Ÿ“œ Cronologia brani (ultimi 100), esportabile in JSON
๐Ÿ”” Notifiche desktop native al cambio brano (notify-send su Linux, Toast su Windows)
๐Ÿ“ Logging su file rotante, attivabile/disattivabile a runtime senza riavvio
โฑ๏ธ Uptime di sessione persistente (non si resetta al cambio stazione)
๐Ÿ–ฅ๏ธ Cross-platform: Linux, macOS, Windows
๐Ÿ–ผ๏ธ Icona nel system tray con menu contestuale (play/pausa, volume, cambio stazione)

๐Ÿš€ Avvio rapido

# 1. Clona il repository
git clone https://github.com/buzzqw/radio-player-m3u.git
cd radio-player-m3u

# 2. Installa le dipendenze Python
pip3 install -r requirements.txt

# 3. Installa mpv (vedi sotto per il tuo sistema)

# 4. Avvia con il file M3U di esempio incluso
python3 radio_player.py radio.m3u

๐Ÿ“ฆ Installazione

Linux โ€” Ubuntu / Debian

sudo apt update
sudo apt install mpv python3 python3-pip libnotify-bin ffmpeg
pip3 install -r requirements.txt

Linux โ€” Fedora / RHEL

sudo dnf install mpv python3 python3-pip libnotify ffmpeg
pip3 install -r requirements.txt

macOS

brew install mpv python ffmpeg
pip3 install -r requirements.txt

Windows

  1. Installa Python 3.8+ da python.org (spunta "Add to PATH")
  2. Installa MPV da mpv.io e aggiungi la cartella al PATH di sistema
  3. (Opzionale) Installa ffmpeg da ffmpeg.org per la registrazione
  4. Installa le dipendenze:
pip install -r requirements.txt
pip install pywin32 win10toast

โ–ถ๏ธ Utilizzo

# Avvia con un file M3U specifico
python3 radio_player.py mie_radio.m3u

# Auto-rileva il primo file .m3u nella cartella corrente
python3 radio_player.py

All'avvio viene selezionata automaticamente la prima stazione. Premi p o Spazio per iniziare ad ascoltare.


๐Ÿ“‹ Formato file M3U

Il player supporta il formato M3U esteso (#EXTM3U) con attributi opzionali:

#EXTM3U

#EXTINF:-1 group-title="Italiana" tvg-logo="https://example.com/logo.png",Radio Deejay
http://deejay.example.com/stream.mp3

#EXTINF:-1 group-title="Classica",Radio Classica
http://classica.example.com/stream

#EXTINF:-1,IT::Radio Rai1
http://icestreaming.rai.it/1.mp3

Suggerimento: Premi b per cercare stazioni su RadioBrowser.info e aggiungerle automaticamente al tuo file M3U con un solo tasto.


๐ŸŽฎ Comandi da tastiera

Riproduzione normale

Tasto Azione
โ†‘ โ†“ Seleziona stazione (senza avviarla)
p ยท Spazio ยท Invio Play / Pausa
+ = Volume +5%
- _ Volume -5%
m Muto / Riattiva audio
1โ€“9 poi Invio Salta direttamente alla stazione numero N
b Apre la ricerca RadioBrowser.info
r Avvia / ferma registrazione stream (richiede ffmpeg)
t Attiva / disattiva notifiche cambio brano
l Attiva / disattiva log su file
h Mostra gli ultimi brani ascoltati
s Esporta la cronologia brani in JSON
q Esci

Modalitร  ricerca RadioBrowser (b)

Tasto Azione
(digita) Cerca stazioni per nome โ€” ricerca automatica dopo 0,3 s
โ†‘ โ†“ Naviga tra i risultati
Invio Aggiunge la stazione selezionata al file M3U
p Ascolta anteprima senza salvare nel M3U
Spazio Ferma l'anteprima in corso
โŒซ Cancella l'ultimo carattere digitato
Esc Torna alla lista stazioni

๐Ÿ” Ricerca RadioBrowser.info

Il player integra la API pubblica di RadioBrowser.info, un database aperto con oltre 40.000 stazioni da tutto il mondo.

Come funziona:

  1. Premi b per aprire la modalitร  sfoglia
  2. Digita il nome (anche parziale) โ€” la ricerca parte automaticamente dopo 0,3 secondi
  3. I risultati sono ordinati per popolaritร  (โ˜… voti della community)
  4. Per ogni stazione vengono mostrati: nome, paese, bitrate, codec e voti
  5. Le stazioni giร  presenti nel tuo M3U sono segnalate con โœ“
  6. Invio aggiunge la stazione al file M3U (controlla automaticamente i duplicati per URL e nome)
  7. p avvia un'anteprima istantanea โ€” Spazio per fermarla
  8. Esc per tornare alla lista

Feedback visivo dello stato:

Stato Colore bordo Indicatore
Ricerca in corso ๐ŸŸก Giallo Spinner animato + query cercata
Risultati trovati ๐ŸŸข Verde Numero stazioni trovate
Nessun risultato ๐Ÿ”ด Rosso Query esatta che non ha prodotto risultati

๐Ÿ”ง Dipendenze

Python (pip)

Pacchetto Versione Uso
rich โ‰ฅ 13.7 Interfaccia TUI โ€” obbligatoria
requests โ‰ฅ 2.31 Metadati ICY e API RadioBrowser
pystray โ‰ฅ 0.19.5 Icona system tray con menu contestuale
Pillow โ‰ฅ 10.0 Generazione immagine icona tray
pip3 install -r requirements.txt

Sistema

Strumento Necessario Uso
mpv โœ… Obbligatorio Engine di riproduzione audio
ffmpeg โฌœ Opzionale Registrazione stream (r)
libnotify โฌœ Opzionale Notifiche desktop su Linux
pywin32 + win10toast โฌœ Opzionale Notifiche Toast su Windows

๐Ÿ› ๏ธ Risoluzione problemi

MPV non trovato all'avvio

mpv --version        # verifica che mpv sia installato e nel PATH
which mpv            # percorso binario (Linux/macOS)

Nessun metadato (artista/titolo) visualizzato

Alcuni stream non espongono metadati ICY standard. Il player prova due metodi:

  1. Lettura diretta dell'header ICY (icy-metaint)
  2. Interrogazione tramite IPC MPV (metadata)

Se entrambi falliscono, lo stream non trasmette metadati โ€” รจ normale per alcune stazioni.

Registrazione non disponibile

ffmpeg -version      # deve rispondere con la versione
# Ubuntu/Debian: sudo apt install ffmpeg
# macOS:         brew install ffmpeg
# Windows:       scarica da https://ffmpeg.org/download.html

Notifiche non appaiono (Linux)

notify-send "Test" "Funziona?"
# Se il comando fallisce:
sudo apt install libnotify-bin   # Ubuntu/Debian
sudo dnf install libnotify       # Fedora

Ricerca RadioBrowser non risponde

La ricerca usa l'API pubblica di radio-browser.info su HTTPS (con fallback HTTP). Se la rete blocca il traffico esterno, la ricerca non sarร  disponibile ma il player funzionerร  normalmente.

Frecce di navigazione non funzionano

Assicurati di eseguire il player in un terminale che supporta le sequenze ANSI (qualsiasi terminale moderno). Evita di lanciarlo da IDE o editor senza terminale integrato.


๐Ÿ“œ Licenza

Distribuito sotto la GNU General Public License v3.0.

Copyright (C) 2025โ€“2026 Andres Zanzani <azanzani@gmail.com>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

๐Ÿ‘จโ€๐Ÿ’ป Autore

Andres Zanzani


๐Ÿค Contribuire

I contributi sono benvenuti!

  1. Fai un fork del repository
  2. Crea un branch per la tua modifica (git checkout -b feature/nuova-funzione)
  3. Fai commit delle modifiche (git commit -m 'Aggiunge nuova funzione')
  4. Fai push del branch (git push origin feature/nuova-funzione)
  5. Apri una Pull Request

Per bug e richieste di funzionalitร  usa la sezione Issues.


๐ŸŽต Buon ascolto! ๐ŸŽต

Fatto con โค๏ธ e Python

About

python radioplayer for m3u file

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages