{"id":50686184,"url":"https://github.com/buzzqw/radioplayer","last_synced_at":"2026-06-08T23:03:14.254Z","repository":{"id":304836173,"uuid":"1020162260","full_name":"buzzqw/radioplayer","owner":"buzzqw","description":"python radioplayer for m3u file","archived":false,"fork":false,"pushed_at":"2026-05-13T07:16:54.000Z","size":94,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-13T09:27:49.908Z","etag":null,"topics":["console","m3u","player","python3","radio","radio-station","streaming","terminal"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/buzzqw.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-15T12:40:49.000Z","updated_at":"2026-05-13T07:17:07.000Z","dependencies_parsed_at":"2025-07-16T09:45:28.832Z","dependency_job_id":"1ef6061f-7a4d-4876-96c1-c4225c81c21e","html_url":"https://github.com/buzzqw/radioplayer","commit_stats":null,"previous_names":["buzzqw/radioplayer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/buzzqw/radioplayer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buzzqw%2Fradioplayer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buzzqw%2Fradioplayer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buzzqw%2Fradioplayer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buzzqw%2Fradioplayer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/buzzqw","download_url":"https://codeload.github.com/buzzqw/radioplayer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buzzqw%2Fradioplayer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34083848,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-08T02:00:07.615Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["console","m3u","player","python3","radio","radio-station","streaming","terminal"],"created_at":"2026-06-08T23:03:09.533Z","updated_at":"2026-06-08T23:03:14.247Z","avatar_url":"https://github.com/buzzqw.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎵 Radio Player M3U\n\n![Python](https://img.shields.io/badge/Python-3.8%2B-blue?logo=python\u0026logoColor=white)\n![License](https://img.shields.io/badge/License-GPL%20v3-green)\n![Platform](https://img.shields.io/badge/Platform-Linux%20%7C%20macOS%20%7C%20Windows-lightgrey)\n![MPV](https://img.shields.io/badge/Requires-mpv-orange)\n![Rich](https://img.shields.io/badge/TUI-Rich-purple)\n\nLettore 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).\n\n---\n\n## 📸 Anteprima\n\n### Schermata principale\n\n```\n╭──────────────────────────────────────────────────────────────────────────╮\n│ 🎵 RADIO PLAYER M3U    ⏰ 14:32:18    00:47    🔊 Volume: 80%  📝 ✗  🔔 │\n╰──────────────────────────────────────────────────────────────────────────╯\n╭─ Status ─────────────────────────────────────────────────────────────────╮\n│ ▶  IN RIPRODUZIONE  │  📡 Radio Deejay                                  │\n│ 🎤 The Weeknd  🎼 Blinding Lights  [01:23]                               │\n│ 🔊 128 kbps • AAC • 📦 OK                                                │\n╰──────────────────────────────────────────────────────────────────────────╯\n╭─ 📻 Stazioni (9 totali) ─────────────────────────────────────────────────╮\n│       1  IT::Venice Radio                                                │\n│       2  IT::Radio24                                                     │\n│  👉▶️  3  IT::Radio Deejay                                               │\n│       4  IT::RDS                                                         │\n│       5  IT::Radio Rai1                                                  │\n│       6  IT::Radio Rai2                                                  │\n│       7  IT::Radio Rai3                                                  │\n│       8  IT::Radio Rai5 Classica                                         │\n│       9  IT::Radio Classica CH                                           │\n╰──────────────────────────────────────────────────────────────────────────╯\n╭─ 🎮 Controlli ───────────────────────────────────────────────────────────╮\n│ ↑/↓ Seleziona  p/Space Play/Pausa  +/= Vol+  -/_ Vol-  m Muto  b Sfoglia │\n│ r Rec  l Log  t Notifiche  h Cronologia  s Salva  1-9+↵ Vai a #  q Esci  │\n╰──────────────────────────────────────────────────────────────────────────╯\n```\n\n### Ricerca RadioBrowser.info (tasto `b`)\n\n```\n╭──────────────────────────────────────────────────────────────────────────╮\n│ 🎵 RADIO PLAYER M3U    ⏰ 14:33:05    01:34    🔊 Volume: 80%  📝 ✗  🔔  │\n╰──────────────────────────────────────────────────────────────────────────╯\n╭─ 🔍 RadioBrowser.info  ✅ 20 stazioni trovate ───────────────────────────╮\n│ radio italia_                                                            │\n╰──────────────────────────────────────────────────────────────────────────╯\n╭─ Risultati (20) ─────────────────────────────────────────────────────────╮\n│    Nome                           Paese   kbps  Codec  ★ Voti            │\n│ 👉 Virgin Radio Italia            Italy    128  MP3    16116             │\n│    Radio Italia Solo Musica       Italy      0  MP3     9276             │\n│    CLASSIC HITS RADIO Italia      Italy    192  AAC     5844             │\n│    NEW HITS RADIO Italia          Italy    320  MP3     3849             │\n│    Radio Italia Anni 60           Italy     64  MP3     2998             │\n╰──────────────────────────────────────────────────────────────────────────╯\n╭─ 🎮 Comandi ricerca ─────────────────────────────────────────────────────╮\n│ ↑/↓ Naviga  ↵ Aggiungi a M3U  p Ascolta anteprima  ⌫ Cancella  Esc Torna │\n╰──────────────────────────────────────────────────────────────────────────╯\n```\n\n---\n\n## ✨ Caratteristiche\n\n| | Funzionalità |\n|---|---|\n| 📻 | Riproduzione di qualsiasi stream radio supportato da MPV (MP3, AAC, OGG, HLS…) |\n| 🖥️ | Interfaccia TUI con 10 stazioni sempre visibili, nessuno scroll necessario |\n| 🎵 | Metadati automatici via ICY: artista, titolo del brano e timer in tempo reale |\n| 📊 | Statistiche live: bitrate, codec e stato del buffer |\n| 🔊 | Controllo volume istantaneo senza interrompere la riproduzione |\n| 🔍 | Ricerca su RadioBrowser.info — 40.000+ stazioni, ordinabili per popolarità |\n| ➕ | Aggiunta stazioni al M3U da RadioBrowser con controllo duplicati automatico |\n| 👂 | Anteprima di una stazione trovata prima di salvarla |\n| 🔴 | Registrazione dello stream in MP3 tramite ffmpeg |\n| 📜 | Cronologia brani (ultimi 100), esportabile in JSON |\n| 🔔 | Notifiche desktop native al cambio brano (`notify-send` su Linux, Toast su Windows) |\n| 📝 | Logging su file rotante, attivabile/disattivabile a runtime senza riavvio |\n| ⏱️ | Uptime di sessione persistente (non si resetta al cambio stazione) |\n| 🖥️ | Cross-platform: Linux, macOS, Windows |\n| 🖼️ | Icona nel system tray con menu contestuale (play/pausa, volume, cambio stazione) |\n\n---\n\n## 🚀 Avvio rapido\n\n```bash\n# 1. Clona il repository\ngit clone https://github.com/buzzqw/radio-player-m3u.git\ncd radio-player-m3u\n\n# 2. Installa le dipendenze Python\npip3 install -r requirements.txt\n\n# 3. Installa mpv (vedi sotto per il tuo sistema)\n\n# 4. Avvia con il file M3U di esempio incluso\npython3 radio_player.py radio.m3u\n```\n\n---\n\n## 📦 Installazione\n\n### Linux — Ubuntu / Debian\n\n```bash\nsudo apt update\nsudo apt install mpv python3 python3-pip libnotify-bin ffmpeg\npip3 install -r requirements.txt\n```\n\n### Linux — Fedora / RHEL\n\n```bash\nsudo dnf install mpv python3 python3-pip libnotify ffmpeg\npip3 install -r requirements.txt\n```\n\n### macOS\n\n```bash\nbrew install mpv python ffmpeg\npip3 install -r requirements.txt\n```\n\n### Windows\n\n1. Installa **Python 3.8+** da [python.org](https://www.python.org/downloads/) *(spunta \"Add to PATH\")*\n2. Installa **MPV** da [mpv.io](https://mpv.io/installation/) e aggiungi la cartella al PATH di sistema\n3. *(Opzionale)* Installa **ffmpeg** da [ffmpeg.org](https://ffmpeg.org/download.html) per la registrazione\n4. Installa le dipendenze:\n\n```cmd\npip install -r requirements.txt\npip install pywin32 win10toast\n```\n\n---\n\n## ▶️ Utilizzo\n\n```bash\n# Avvia con un file M3U specifico\npython3 radio_player.py mie_radio.m3u\n\n# Auto-rileva il primo file .m3u nella cartella corrente\npython3 radio_player.py\n```\n\nAll'avvio viene selezionata automaticamente la prima stazione. Premi `p` o `Spazio` per iniziare ad ascoltare.\n\n---\n\n## 📋 Formato file M3U\n\nIl player supporta il formato **M3U esteso** (`#EXTM3U`) con attributi opzionali:\n\n```m3u\n#EXTM3U\n\n#EXTINF:-1 group-title=\"Italiana\" tvg-logo=\"https://example.com/logo.png\",Radio Deejay\nhttp://deejay.example.com/stream.mp3\n\n#EXTINF:-1 group-title=\"Classica\",Radio Classica\nhttp://classica.example.com/stream\n\n#EXTINF:-1,IT::Radio Rai1\nhttp://icestreaming.rai.it/1.mp3\n```\n\n\u003e **Suggerimento:** Premi `b` per cercare stazioni su RadioBrowser.info e aggiungerle automaticamente al tuo file M3U con un solo tasto.\n\n---\n\n## 🎮 Comandi da tastiera\n\n### Riproduzione normale\n\n| Tasto | Azione |\n|-------|--------|\n| `↑` `↓` | Seleziona stazione (senza avviarla) |\n| `p` · `Spazio` · `Invio` | Play / Pausa |\n| `+` `=` | Volume +5% |\n| `-` `_` | Volume -5% |\n| `m` | Muto / Riattiva audio |\n| `1`–`9` poi `Invio` | Salta direttamente alla stazione numero N |\n| `b` | Apre la ricerca RadioBrowser.info |\n| `r` | Avvia / ferma registrazione stream *(richiede ffmpeg)* |\n| `t` | Attiva / disattiva notifiche cambio brano |\n| `l` | Attiva / disattiva log su file |\n| `h` | Mostra gli ultimi brani ascoltati |\n| `s` | Esporta la cronologia brani in JSON |\n| `q` | Esci |\n\n### Modalità ricerca RadioBrowser (`b`)\n\n| Tasto | Azione |\n|-------|--------|\n| *(digita)* | Cerca stazioni per nome — ricerca automatica dopo 0,3 s |\n| `↑` `↓` | Naviga tra i risultati |\n| `Invio` | Aggiunge la stazione selezionata al file M3U |\n| `p` | Ascolta anteprima senza salvare nel M3U |\n| `Spazio` | Ferma l'anteprima in corso |\n| `⌫` | Cancella l'ultimo carattere digitato |\n| `Esc` | Torna alla lista stazioni |\n\n---\n\n## 🔍 Ricerca RadioBrowser.info\n\nIl 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.\n\n**Come funziona:**\n\n1. Premi `b` per aprire la modalità sfoglia\n2. Digita il nome (anche parziale) — la ricerca parte automaticamente dopo 0,3 secondi\n3. I risultati sono ordinati per **popolarità** (★ voti della community)\n4. Per ogni stazione vengono mostrati: nome, paese, bitrate, codec e voti\n5. Le stazioni **già presenti** nel tuo M3U sono segnalate con `✓`\n6. `Invio` aggiunge la stazione al file M3U (controlla automaticamente i duplicati per URL e nome)\n7. `p` avvia un'anteprima istantanea — `Spazio` per fermarla\n8. `Esc` per tornare alla lista\n\n**Feedback visivo dello stato:**\n\n| Stato | Colore bordo | Indicatore |\n|-------|-------------|------------|\n| Ricerca in corso | 🟡 Giallo | Spinner animato + query cercata |\n| Risultati trovati | 🟢 Verde | Numero stazioni trovate |\n| Nessun risultato | 🔴 Rosso | Query esatta che non ha prodotto risultati |\n\n---\n\n## 🔧 Dipendenze\n\n### Python (`pip`)\n\n| Pacchetto | Versione | Uso |\n|-----------|----------|-----|\n| [`rich`](https://github.com/Textualize/rich) | ≥ 13.7 | Interfaccia TUI — obbligatoria |\n| [`requests`](https://requests.readthedocs.io) | ≥ 2.31 | Metadati ICY e API RadioBrowser |\n| [`pystray`](https://github.com/moses-palmer/pystray) | ≥ 0.19.5 | Icona system tray con menu contestuale |\n| [`Pillow`](https://python-pillow.org) | ≥ 10.0 | Generazione immagine icona tray |\n\n```bash\npip3 install -r requirements.txt\n```\n\n### Sistema\n\n| Strumento | Necessario | Uso |\n|-----------|-----------|-----|\n| `mpv` | ✅ Obbligatorio | Engine di riproduzione audio |\n| `ffmpeg` | ⬜ Opzionale | Registrazione stream (`r`) |\n| `libnotify` | ⬜ Opzionale | Notifiche desktop su Linux |\n| `pywin32` + `win10toast` | ⬜ Opzionale | Notifiche Toast su Windows |\n\n---\n\n## 🛠️ Risoluzione problemi\n\n### MPV non trovato all'avvio\n\n```bash\nmpv --version        # verifica che mpv sia installato e nel PATH\nwhich mpv            # percorso binario (Linux/macOS)\n```\n\n### Nessun metadato (artista/titolo) visualizzato\n\nAlcuni stream non espongono metadati ICY standard. Il player prova due metodi:\n1. Lettura diretta dell'header ICY (`icy-metaint`)\n2. Interrogazione tramite IPC MPV (`metadata`)\n\nSe entrambi falliscono, lo stream non trasmette metadati — è normale per alcune stazioni.\n\n### Registrazione non disponibile\n\n```bash\nffmpeg -version      # deve rispondere con la versione\n# Ubuntu/Debian: sudo apt install ffmpeg\n# macOS:         brew install ffmpeg\n# Windows:       scarica da https://ffmpeg.org/download.html\n```\n\n### Notifiche non appaiono (Linux)\n\n```bash\nnotify-send \"Test\" \"Funziona?\"\n# Se il comando fallisce:\nsudo apt install libnotify-bin   # Ubuntu/Debian\nsudo dnf install libnotify       # Fedora\n```\n\n### Ricerca RadioBrowser non risponde\n\nLa 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.\n\n### Frecce di navigazione non funzionano\n\nAssicurati 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.\n\n---\n\n## 📜 Licenza\n\nDistribuito sotto la **GNU General Public License v3.0**.\n\n```\nCopyright (C) 2025–2026 Andres Zanzani \u003cazanzani@gmail.com\u003e\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n```\n\n---\n\n## 👨‍💻 Autore\n\n**Andres Zanzani**\n\n- 📧 [azanzani@gmail.com](mailto:azanzani@gmail.com)\n- 🐙 GitHub: [@buzzqw](https://github.com/buzzqw)\n\n---\n\n## 🤝 Contribuire\n\nI contributi sono benvenuti!\n\n1. Fai un fork del repository\n2. Crea un branch per la tua modifica (`git checkout -b feature/nuova-funzione`)\n3. Fai commit delle modifiche (`git commit -m 'Aggiunge nuova funzione'`)\n4. Fai push del branch (`git push origin feature/nuova-funzione`)\n5. Apri una **Pull Request**\n\nPer bug e richieste di funzionalità usa la sezione [Issues](https://github.com/buzzqw/radio-player-m3u/issues).\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n🎵 **Buon ascolto!** 🎵\n\n*Fatto con ❤️ e Python*\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuzzqw%2Fradioplayer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbuzzqw%2Fradioplayer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuzzqw%2Fradioplayer/lists"}