诱变剂:如何提取专辑艺术属性?

2024-06-01 02:42:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个使用python3.7.1和诱变剂1.42的mp3文件中获取专辑艺术图片的属性(到目前为止只是宽度和高度,但可能会更晚),但到目前为止似乎没有任何效果。我还能够正确地提取一些其他信息

doc正在讲述APIC,但尝试显示所有标记并不会显示与任何图片相关的任何内容(而且我的mp3测试文件中有相册图片):

import os,sys
from mutagen.mp3 import MP3
from mutagen.easyid3 import EasyID3

song_path = os.path.join(sys.argv[1]) # With sys.argv[1] the path to a mp3 file containing a picture
track = MP3(song_path, ID3=EasyID3)
pprint(track.get('title')[0] + ' ' + str(track.info.length) + 's, ' + str(int(track.info.bitrate / 1000)) + 'kbps')
print(track.keys())

结果,使用我的一个文件:

^{pr2}$

(这个mp3文件有一个嵌入的图片,我可以在我使用的任何音乐软件中看到它。)

我发现了很多不同的方法来处理这个问题,但有些似乎过时了,其他的就是不起作用,我不明白我在这里遗漏了什么。在

如有任何帮助,我们将不胜感激


Tags: 文件pathfromimportsongossys图片
1条回答
网友
1楼 · 发布于 2024-06-01 02:42:23

好吧,我最终弄明白了:EasyID3模块只处理最常见的标签,它不包括图片数据(APIC)。为此,您需要使用ID3模块,这是更复杂的理解方式。然后,查找APIC:键,它将图片存储为字节字符串。在

下面是一个小例子,使用PIL处理图片:

import os,sys
from io import BytesIO
from mutagen.mp3 import MP3
from mutagen.id3 import ID3
from PIL import Image

song_path = os.path.join(sys.argv[1])
track = MP3(song_path)
tags = ID3(song_path)
print("ID3 tags included in this song          ")
print(tags.pprint())
print("                        -")
pict = tags.get("APIC:").data
im = Image.open(BytesIO(pict))
print('Picture size : ' + str(im.size))

希望有帮助,祝你好运!;)

相关问题 更多 >