使用python接收冰铸元数据 [英] Receive ice cast meta data with python

查看:79
本文介绍了使用python接收冰铸元数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试使用以下脚本获取mp3流的强制转换元数据:

I tried to get the ice cast meta data of a mp3 stream with this script:

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()

这有效,但仅适用于第一个软件包.曲目改变时,我将永远不会收到标题信息的更新.我的问题是:这是否是预期的行为,并且轨道信息仅发送了一次,还是我出了点问题?我希望能够注意到曲目的变化而无需不时轮询流.

This works but just for the first package. I will never receive an update on the title information when the track changes. My question is: Is this intended behavior and the track info is just send once or did I something wrong? I would like to be able to notice a track change without polling the stream from time to time.

推荐答案

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

这篇关于使用python接收冰铸元数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆