An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

          

# ๐ŸŽต Radio Player M3U

![Python](https://img.shields.io/badge/Python-3.8%2B-blue?logo=python&logoColor=white)
![License](https://img.shields.io/badge/License-GPL%20v3-green)
![Platform](https://img.shields.io/badge/Platform-Linux%20%7C%20macOS%20%7C%20Windows-lightgrey)
![MPV](https://img.shields.io/badge/Requires-mpv-orange)
![Rich](https://img.shields.io/badge/TUI-Rich-purple)

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*