使用python接收ice cast元数据



我试图用这个脚本获取mp3流的ice cast元数据:

import requests
url = 'http://stream.jam.fm/jamfm-nmr/mp3-128/konsole/'
try:
    response = requests.get(url, headers={'Icy-MetaData': 1}, stream=True)
    response.raise_for_status()
except requests.RequestException, e:
    print 'Error:', e
else:
    headers, stream = response.headers, response.raw
    meta_int = headers.get('icy-metaint')
    if meta_int is not None:
        audio_length = int(meta_int)
        while True:
            try:
                audio_data = stream.read(audio_length)
                meta_byte = stream.read(1)
                if (meta_byte):
                    meta_length = ord(meta_byte) * 16
                    meta_data = stream.read(meta_length)
                    print meta_data
            except KeyboardInterrupt:
                break
    response.close()

这只适用于第一个包。当曲目更改时,我将永远不会收到标题信息的更新。我的问题是:这是故意的行为和跟踪信息只发送了一次,还是我做错了什么?我希望能够在不不时轮询流的情况下注意到轨道的变化。

while True:
    try:
        #new request
        response = requests.get(url, headers={'Icy-MetaData': 1}, stream=True)
        response.raise_for_status()
        headers, stream = response.headers, response.raw
        meta_int = headers.get('icy-metaint')
        audio_data = stream.read(audio_length)
        meta_byte = stream.read(1)
        if (meta_byte):
            meta_length = ord(meta_byte) * 16
            meta_data = stream.read(meta_length)
            print (meta_data)
    except KeyboardInterrupt:
        break

相关内容

  • 没有找到相关文章

最新更新