在Python 2.7中获取在线MP3文件的标题和艺术家信息

0 投票
2 回答
1006 浏览
提问于 2025-04-20 14:36

我正在用Python 2.7写一个脚本,目的是获取链接的MP3文件的标题、艺术家和长度(长度不是特别重要)。我不太确定该怎么做,试过用urllib和mutagen几种方法,但都没有成功。有一种方法曾经有效,但不知道为什么现在不行了。urllib开始提示说有太多值无法解包,我也不明白为什么。以下是之前能用的代码:

from urllib import urlopen
from mutagen.mp3 import MP3

def getInfo(url):
    filename, headers = urlopen(url)
    audio = MP3(filename)

这段代码之前运行得很好,我也不知道发生了什么变化,但自从那以后我没有找到其他有效的方法。可能我这里说得不够清楚,如果你需要更多信息,请告诉我。谢谢!

2 个回答

1

如果你在使用Python 3,那么你需要用mutagenx,而不是mutagen。具体信息可以查看这里

import mutagenx
import mutagenx.id3
audio = mutagenx.id3.ID3(filename, translate=False)
print(audio["title"], audio["artist"], audio["length"])
1

我觉得,你应该先把mp3文件下载到一个临时文件夹里。然后,你就可以读取它的一些信息了。比如,

from urllib2 import Request, urlopen
from mutagen.mp3 import MP3

def getInfo(url):
    start_byte = 0
    end_byte = 5000
    url = Request(url)
    url.add_header('Range', 'bytes=' + str(start_byte) + '-' + str(end_byte))
    filename = urlopen(url)

    output = open("test_file.mp3",'wb')
    output.write(filename.read())
    output.close()
    audio = MP3("test_file.mp3")

    print audio.info.pprint()

不过,这并不是一个真正的解决办法。因为我对mp3文件的结构一无所知,不知道哪些字节是id3头部。这只是一个实现的例子。

撰写回答