诱变剂:如何提取专辑封面属性?
Mutagen : how to extract album art properties?
我正在尝试使用 python 3.7.1 和 mutagen 1.42 从 mp3 文件中获取专辑封面图片的属性(到目前为止只是宽度和高度,但可能稍后会更多),但似乎没有任何东西工作至今。我还能够正确提取一些其他信息
文档讲述了 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())
结果,使用我的文件:
> Exponential Tears 208.0s, 205kbps
> ['album', 'copyright', 'encodedby', 'length', 'title', 'artist', 'albumartist', 'tracknumber', 'genre', 'date', 'originaldate']
(这个 mp3 文件确实有一个嵌入的图片,我可以用我使用的任何音乐软件看到它。)
我发现了很多用诱变剂处理这个问题的不同方法,但有些似乎已经过时,有些根本不起作用,我不明白我在这里遗漏了什么。
如有任何帮助,我们将不胜感激
好吧,我终于明白了:EasyID3 模块只处理最常见的标签,它不包括图片数据(APIC)。为此,您需要使用 ID3 module, which is way more complex to understand. Then, look for the 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))
希望对您有所帮助,祝您好运! ;)
我正在尝试使用 python 3.7.1 和 mutagen 1.42 从 mp3 文件中获取专辑封面图片的属性(到目前为止只是宽度和高度,但可能稍后会更多),但似乎没有任何东西工作至今。我还能够正确提取一些其他信息
文档讲述了 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())
结果,使用我的文件:
> Exponential Tears 208.0s, 205kbps
> ['album', 'copyright', 'encodedby', 'length', 'title', 'artist', 'albumartist', 'tracknumber', 'genre', 'date', 'originaldate']
(这个 mp3 文件确实有一个嵌入的图片,我可以用我使用的任何音乐软件看到它。)
我发现了很多用诱变剂处理这个问题的不同方法,但有些似乎已经过时,有些根本不起作用,我不明白我在这里遗漏了什么。
如有任何帮助,我们将不胜感激
好吧,我终于明白了:EasyID3 模块只处理最常见的标签,它不包括图片数据(APIC)。为此,您需要使用 ID3 module, which is way more complex to understand. Then, look for the 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))
希望对您有所帮助,祝您好运! ;)