首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python 3从互联网广播流中获取歌曲名称

Python 3从互联网广播流中获取歌曲名称
EN

Stack Overflow用户
提问于 2016-01-30 13:20:13
回答 1查看 5.8K关注 0票数 3

如何从网络广播流中获得歌曲名称?

Python:从url获取shoutcast/internet电台的名称我在这里看过,但是只有广播电台的名字。但是怎么知道这首歌的名字呢?这里是流链接,我想从那里得到歌曲的名字。http://pool.cdn.lagardere.cz/fm-evropa2-128

我怎么发动汽车呢?你能帮帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-30 16:53:32

要获得流标题,需要请求元数据。请参阅shoutcast/icecast协议描述

代码语言:javascript
复制
#!/usr/bin/env python
from __future__ import print_function
import re
import struct
import sys
try:
    import urllib2
except ImportError:  # Python 3
    import urllib.request as urllib2

url = 'http://pool.cdn.lagardere.cz/fm-evropa2-128'  # radio stream
encoding = 'latin1' # default: iso-8859-1 for mp3 and utf-8 for ogg streams
request = urllib2.Request(url, headers={'Icy-MetaData': 1})  # request metadata
response = urllib2.urlopen(request)
print(response.headers, file=sys.stderr)
metaint = int(response.headers['icy-metaint'])
for _ in range(10): # # title may be empty initially, try several times
    response.read(metaint)  # skip to metadata
    metadata_length = struct.unpack('B', response.read(1))[0] * 16  # length byte
    metadata = response.read(metadata_length).rstrip(b'\0')
    print(metadata, file=sys.stderr)
    # extract title from the metadata
    m = re.search(br"StreamTitle='([^']*)';", metadata)
    if m:
        title = m.group(1)
        if title:
            break
else: 
    sys.exit('no title found')
print(title.decode(encoding, errors='replace'))

在本例中,流标题为空。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35102278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档