Чтение метаданных SHOUTcast / Icecast из радиопотока с Python - PullRequest
7 голосов
/ 07 июля 2011

Кто-нибудь имел успех при чтении метаданных SHOUTcast / Icecast из удаленного радиопотока?

Есть несколько библиотек , которые могут читать метаданные из локального файла MP3, но ни одна из них не предназначенаработа с радиопотоком (который по сути является бесконечным файлом MP3 на удаленном сервере).

Другие рекомендации предлагают загружать конечное число битов с начала потока mp3, но это часто приводит ккуча шестнадцатеричных выводов, ничем не напоминающих текстовые метаданные.

Кто-нибудь знает о более успешном решении?Спасибо.

Ответы [ 3 ]

5 голосов
/ 04 июня 2013
#!/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'

Для более подробной информации проверьте эту ссылку

0 голосов
/ 20 декабря 2014

Я использовал немного кода @ dbogdan и создал библиотеку, которую я использую для более 4 тысяч потоков в день. Он работает хорошо, стабилен и поддерживает метаданные, такие как название песни, имя исполнителя, битрейт и тип контента.

вы можете найти его на https://github.com/Dirble/streamscrobbler-python

0 голосов
/ 07 июля 2011

Поскольку mp3 является проприетарным форматом, его спецификация не так проста. Этот веб-сайт дает хороший обзор, я думаю.

В обычных файлах mp3 тег метаданных ID3v1 идет в самом конце файла, он составляет последние 128 байтов.Это на самом деле плохой дизайн.Система ID3 была добавлена ​​в качестве запоздалой мысли к mp3, так что я думаю, что не было другого способа сделать это без нарушения обратной совместимости.Это означает, что если радиопоток предоставляется как бесконечный mp3-файл, в обычном смысле не может быть тега ID3.

Я бы посоветовался с людьми, которые управляют радиостанцией;возможно, они поместили тег ID3 в нестандартное место?

...