online - Lectura de metadatos SHOUTcast/Icecast de una transmisión de radio con Python
ogg radio stream (3)
Como mp3 es un formato propietario, la especificación no es tan fácil de obtener. Este sitio web ofrece una buena visión general, creo.
En los archivos mp3 normales, la etiqueta de metadatos ID3v1 va al final del archivo, forma los últimos 128 bytes. Este es realmente un mal diseño. El sistema ID3 se agregó como una ocurrencia tardía a mp3, así que supongo que no había otra manera de hacerlo sin romper la compatibilidad con versiones anteriores. Esto significa que si la transmisión de radio se proporciona como un archivo mp3 interminable, no puede haber una etiqueta ID3 en el sentido normal.
Verificaría con las personas que dirigen la estación de radio; quizás ponen la etiqueta ID3 en un lugar no estándar?
¿Alguien ha tenido éxito leyendo los metadatos de SHOUTcast / Icecast de una transmisión de radio remota?
Hay varias bibliotecas que pueden leer metadatos de un archivo MP3 local, pero ninguna parece diseñada para funcionar con una transmisión de radio (que es esencialmente un archivo MP3 sin fin en un servidor remoto).
Otras recomendaciones sugieren descargar un número finito de bits desde el comienzo de la transmisión de mp3, pero esto a menudo conduce a un montón de salida hexadecimal sin nada que se parezca a los metadatos de texto.
¿Alguien sabe de una solución más exitosa? Gracias.
#!/usr/bin/env python
import urllib2
stream_url = ''http://pub1.di.fm/di_classictrance''
request = urllib2.Request(stream_url)
try:
request.add_header(''Icy-MetaData'', 1)
response = urllib2.urlopen(request)
icy_metaint_header = response.headers.get(''icy-metaint'')
if icy_metaint_header is not None:
metaint = int(icy_metaint_header)
read_buffer = metaint+255
content = response.read(read_buffer)
title = content[metaint:].split("''")[1]
print title
except:
print ''Error''
Para más detalles, consulte este enlace
Utilicé un poco del código de @dbogdan y creé una biblioteca que uso para más de 4 mil transmisiones diarias. Funciona bien y es estable y admite metadatos como el título de la canción, el nombre del artista, la tasa de bits y el tipo de contenido.
puedes encontrarlo en https://github.com/Dirble/streamscrobbler-python