https://github.com/buzzqw/radioplayer
python radioplayer for m3u file
https://github.com/buzzqw/radioplayer
console m3u player python3 radio radio-station streaming terminal
Last synced: about 2 months ago
JSON representation
python radioplayer for m3u file
- Host: GitHub
- URL: https://github.com/buzzqw/radioplayer
- Owner: buzzqw
- Created: 2025-07-15T12:40:49.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2026-05-13T07:16:54.000Z (3 months ago)
- Last Synced: 2026-05-13T09:27:49.908Z (3 months ago)
- Topics: console, m3u, player, python3, radio, radio-station, streaming, terminal
- Language: Python
- Homepage:
- Size: 91.8 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ๐ต Radio Player M3U





Lettore di stazioni radio da terminale, **cross-platform** (Linux ยท macOS ยท Windows), con interfaccia TUI colorata basata su [Rich](https://github.com/Textualize/rich), metadati in tempo reale, registrazione stream e ricerca integrata su [RadioBrowser.info](https://www.radio-browser.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
```bash
# 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
```bash
sudo apt update
sudo apt install mpv python3 python3-pip libnotify-bin ffmpeg
pip3 install -r requirements.txt
```
### Linux โ Fedora / RHEL
```bash
sudo dnf install mpv python3 python3-pip libnotify ffmpeg
pip3 install -r requirements.txt
```
### macOS
```bash
brew install mpv python ffmpeg
pip3 install -r requirements.txt
```
### Windows
1. Installa **Python 3.8+** da [python.org](https://www.python.org/downloads/) *(spunta "Add to PATH")*
2. Installa **MPV** da [mpv.io](https://mpv.io/installation/) e aggiungi la cartella al PATH di sistema
3. *(Opzionale)* Installa **ffmpeg** da [ffmpeg.org](https://ffmpeg.org/download.html) per la registrazione
4. Installa le dipendenze:
```cmd
pip install -r requirements.txt
pip install pywin32 win10toast
```
---
## โถ๏ธ Utilizzo
```bash
# 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:
```m3u
#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](https://www.radio-browser.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`](https://github.com/Textualize/rich) | โฅ 13.7 | Interfaccia TUI โ obbligatoria |
| [`requests`](https://requests.readthedocs.io) | โฅ 2.31 | Metadati ICY e API RadioBrowser |
| [`pystray`](https://github.com/moses-palmer/pystray) | โฅ 0.19.5 | Icona system tray con menu contestuale |
| [`Pillow`](https://python-pillow.org) | โฅ 10.0 | Generazione immagine icona tray |
```bash
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
```bash
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
```bash
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)
```bash
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
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**
- ๐ง [azanzani@gmail.com](mailto:azanzani@gmail.com)
- ๐ GitHub: [@buzzqw](https://github.com/buzzqw)
---
## ๐ค 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](https://github.com/buzzqw/radio-player-m3u/issues).
---
๐ต **Buon ascolto!** ๐ต
*Fatto con โค๏ธ e Python*