______ ___ ______ __
_________ ___ ____/ / __ \____ _____/ (_)___ / __ \ \/ /
/ ___/ __ `__ \/ __ / /_/ / __ `/ __ / / __ \/ /_/ /\ /
/ /__/ / / / / / /_/ / _, _/ /_/ / /_/ / / /_/ / ____/ / /
\___/_/ /_/ /_/\__,_/_/ |_|\__,_/\__,_/_/\____/_/ /_/
Reproductor de radio online, principalmente se nutre de datos de listas .M3U, pero permite búsqueda online, reproducción aleatoria y continua, gestión de favoritos, historial de últimas escuchas, estadísticas de uso, descarga de playlists desde GitHub y búsqueda en repositorios remotos.
Escucha radio internacionales o temáticas, todo ello desde tu terminal, consumiendo menos de 15 Megas de memoria RAM.
- mpv instalado y accesible en PATH
- Windows: instalar
mpv(por ejemplo conchoco install mpv) y asegurarse quempv.exeesté en PATH - Linux:
sudo apt install mpvo el gestor de paquetes equivalente - macOS:
brew install mpv
- Windows: instalar
- Python 3.9+
- (Recomendado) Para iconos en la interfaz:
pip install charstyle(si no está instalado, se usarán caracteres Unicode básicos) - (Opcional) Para mejor soporte de colores en Windows:
pip install colorama
pip install -r requirements.txt- Coloca tus listas M3U/M3U8 en la carpeta
playlists/(puedes añadir muchas, se soporta paginación) - Ejecuta:
python main.py-
Menú principal (organizado por secciones):
REPRODUCCIÓN
-
- Mostrar canales (elige playlist y luego canal)
-
- Reproducción aleatoria (global) — atajo
r
- Reproducción aleatoria (global) — atajo
-
- Reproducir último canal — atajo
u/l
- Reproducir último canal — atajo
BÚSQUEDA
-
- Buscar en canales locales (búsqueda global en tus playlists) — atajo
/
- Buscar en canales locales (búsqueda global en tus playlists) — atajo
-
- Buscar online (Radio Browser) — atajo
b
- Buscar online (Radio Browser) — atajo
-
- Buscar en repositorio remoto — atajo
g
- Buscar en repositorio remoto — atajo
GESTIÓN
-
- Favoritos (incluye editar, exportar JSON/M3U, importar, validar URLs, buscar y aleatorio)
-
- Historial (incluye exportar/importar, limpiar, reproducir último y aleatorio)
-
- Estadísticas (top emisoras, resumen, fuentes más usadas) — atajo
s
- Estadísticas (top emisoras, resumen, fuentes más usadas) — atajo
CONFIGURACIÓN Y DATOS
-
- Descargar playlists desde GitHub — atajo
d
- Descargar playlists desde GitHub — atajo
-
- Configuración (incluye exportar/importar configuración completa) — atajo
c
- Configuración (incluye exportar/importar configuración completa) — atajo
-
- Salir — atajo
q
- Salir — atajo
-
-
Durante la reproducción usa la interfaz nativa de mpv (pulsa
qpara salir, etc.). -
mpv se lanza en modo solo audio desactivando el vídeo (
--no-video --vid=no).
Puedes activar la validación de URLs desde el menú de configuración (opción v). Cuando está activada, el programa comprobará si una URL está disponible antes de intentar reproducirla. Esto ayuda a evitar errores con emisoras que ya no están activas.
- Activación: Menú principal → 7 (Configuración) →
v - Configuración: Al activar, puedes establecer un timeout de validación (1-30 segundos, por defecto 5)
- Funcionamiento: Usa una petición HTTP ligera para verificar que la URL responde antes de iniciar la reproducción
La interfaz puede mostrar iconos visuales (emojis/Unicode) para mejorar la experiencia. Los iconos están habilitados por defecto y pueden activarse/desactivarse desde el menú de configuración (opción i).
- Listas paginadas (playlists, canales, historial):
- Numeración global: los índices continúan entre páginas (11, 12, ...)
- Vista en columnas: se adapta al ancho de la terminal
- Truncado: nombres largos se acortan con elipsis (…)
nsiguiente,panterior,gir a página #,0/qvolversalterna orden A↔Z;/filtra
- Selección de canales:
raleatorio entre resultados;fañadir/eliminar favorito por número - Favoritos:
eexportar JSON,mexportar M3U,iimportar,raleatoriovvalidar todas las URLs,/buscar/filtrar- Editar favoritos desde el submenú (cambiar nombre/URL)
- Historial:
lreproducir último canal,climpiar historial completo,raleatorio - Aleatorio: se omiten emisoras en
blacklisty si falla la reproducción se prueba otra automáticamente (hasta 3 intentos) - La interfaz usa colores ANSI; en Windows se habilitan automáticamente si
coloramaestá instalado. - Los conteos de elementos se muestran en títulos y headers para mejor orientación.
- Estadísticas: muestra top emisoras, totales, fuentes más escuchadas y últimas reproducciones.
- Búsqueda mejorada: historial de búsquedas, sugerencias inteligentes basadas en favoritos e historial, y validación de longitud mínima.
- Limpieza automática del historial: configurable por días o número máximo de entradas.
- Endpoints con fallback; se respeta
user_agentyproxydeconfig.json. - Filtros opcionales: país, idioma y bitrate mínimo.
- Tras la búsqueda, puedes listar resultados, reproducir aleatorio, añadir a favoritos y queda en
history.json.
- Búsqueda en tiempo real en el repositorio junguler/m3u-radio-music-playlists sin descargar archivos.
- Opciones de búsqueda:
- Todas las categorías disponibles (23+ categorías)
- Solo estilos más populares (12 categorías)
- Selección personalizada de categorías
- Los resultados se pueden reproducir directamente o descargar las categorías completas.
- No ocupa espacio en disco: busca sin descargar archivos.
El programa permite descargar playlists directamente desde el repositorio junguler/m3u-radio-music-playlists, que contiene una extensa colección de listas M3U categorizadas por género musical.
- Lista completa: Descarga
everything-full.m3ucon todas las emisoras disponibles - Una categoría: Descarga una categoría específica (Rock, Pop, Jazz, etc.)
- Múltiples categorías: Selección personalizada con checkboxes para descargar varias categorías a la vez
- Estilos más populares: Descarga rápida de los 12 estilos más populares con un solo clic
Rock, Pop, Electronic, Hip Hop, Jazz, Classical, Country, Reggae, Metal, Dance, Techno, House, Trance, Latin, Funk, Blues, Alternative, Indie, Hard Rock, Acid Jazz, Smooth Jazz, Eurodance, J-Pop y más.
Agradecimiento: Este proyecto utiliza y agradece el excelente trabajo del repositorio junguler/m3u-radio-music-playlists de @junguler, que proporciona una extensa colección de listas M3U categorizadas y actualizadas regularmente. ¡Gracias por compartir este valioso recurso con la comunidad!
Archivo opcional ubicado en el directorio de datos del usuario:
- Windows:
%APPDATA%\cmdRadioPy\config.json - Linux/Mac:
~/.config/cmdRadioPy/config.json(o$XDG_CONFIG_HOME/cmdRadioPy/config.json)
Desde el menú de configuración (opción 7), puedes:
- Exportar (e): Guarda en un archivo JSON toda tu configuración, favoritos e historial. Útil para hacer backups o transferir a otro sistema.
- Importar (i): Restaura configuración, favoritos e historial desde un archivo de exportación. Permite elegir qué importar y muestra un resumen antes de confirmar.
Campos soportados:
user_agent: string (ej. "Mozilla/5.0 ...")proxy: string (ej. "http://127.0.0.1:8080")retries: número de reintentos si falla la reproducción (0-5)retry_delay_sec: segundos entre reintentos (0-10)ui_spacing: "comfortable" (más aire) o "compact" (más denso)page_size: tamaño de página para listas (5-100)sort_playlists: "asc" o "desc"sort_channels: "asc" o "desc"volume: volumen por defecto de mpv (0-130), por defecto 40shutdown_minutes: tiempo de apagado automático (0 para desactivar)blacklist: array de palabras/fragmentos a excluir en aleatorio (coincidencia por texto en nombre/URL)validate_urls: boolean, activa validación de URLs antes de reproducir (por defectofalse)url_validation_timeout: segundos de timeout para validación (1-30, por defecto 5)show_icons: boolean, mostrar iconos en la interfaz (por defectotrue)min_search_length: número mínimo de caracteres para búsquedas (por defecto 3)history_cleanup_mode: modo de limpieza automática del historial: "none", "days" o "count"history_cleanup_days: días de antigüedad para limpiar (si mode es "days")history_cleanup_max_entries: número máximo de entradas en historial (si mode es "count")
Ejemplo:
{
"user_agent": "Mozilla/5.0",
"proxy": "http://127.0.0.1:8080",
"retries": 2,
"retry_delay_sec": 2,
"ui_spacing": "comfortable",
"page_size": 20,
"sort_playlists": "asc",
"sort_channels": "asc",
"volume": 40,
"shutdown_minutes": 0,
"blacklist": ["demo", "prueba"],
"validate_urls": false,
"url_validation_timeout": 5,
"show_icons": true,
"min_search_length": 3,
"history_cleanup_mode": "none",
"history_cleanup_days": 30,
"history_cleanup_max_entries": 500
}main.py: CLI con paginación, columnas, colores, búsqueda, favoritos (export/import/aleatorio), configuración, historial (export/import/aleatorio) y búsqueda online con filtrosm3u_parser.py: parser de playlists.m3u/.m3u8player.py: integración conmpven modo audio (sin vídeo)playlists/: tus listas M3U/M3U8 (dentro del proyecto)
Los siguientes archivos se guardan automáticamente en el directorio de datos del usuario:
- Windows:
%APPDATA%\cmdRadioPy\ - Linux/Mac:
~/.config/cmdRadioPy/config.json: configuración de red, reintentos, densidad UI, volumen, temporizador, blacklist, validación de URLs, iconos, búsqueda e historialfavorites.json: favoritos persistenteshistory.json: historial de reproducciones (con limpieza automática opcional)search_history.json: historial de búsquedas para sugerencias
- Si
mpvno está en PATH, el programa mostrará instrucciones de instalación. - El modo "aleatorio global" selecciona una playlist aleatoria y luego un canal aleatorio dentro (no uniformemente por número de canales).