[英]Embed Album Cover to mp3 with Mutagen in Python 3
ID3 . ID3 。 This is the Python 3 API, i'm not sure how to embed an image, so far I have this where I change the tags,
这是Python 3 API,我不知道如何嵌入图像,到目前为止,我有更改标签的地方,
def addMetaData(url, title, artist, album, track):
response = requests.get(url, stream=True)
with open('img.jpg', 'wb') as out_file:
shutil.copyfileobj(response.raw, out_file)
del response
audio = MP3(filename=title+".mp3", ID3 = EasyID3)
audio['artist'] = artist
audio['title'] = title
audio['tracknumber'] = track
audio['album'] = album
audio.save()
I don't think it is possible to embed albumart using EasyID3
but it is possible with ID3
. 我不认为使用
EasyID3
嵌入albumart是可能的,但ID3
可以实现。
You can embed albumart using ID3
like below: 您可以使用
ID3
嵌入albumart,如下所示:
from mutagen.id3 import ID3, APIC
audio = ID3(music_file.mp3)
with open('img.jpg', 'rb') as albumart:
audio['APIC'] = APIC(
encoding=3,
mime='image/jpeg',
type=3, desc=u'Cover',
data=albumart.read()
)
audio.save()
If performance is not your major concern, you can save textual metadata with EasyID3
and then load the music file again using ID3
to embed albumart. 如果性能不是您的主要考虑因素,您可以使用
EasyID3
保存文本元数据,然后使用ID3
重新加载音乐文件以嵌入albumart。 Otherwise, you can work completely using ID3
. 否则,您可以完全使用
ID3
。
So, your code in 1st case will be: 那么,第一种情况下的代码将是:
import requests
import shutil
# you can directly import EasyID3 and ID3
from mutagen.easyid3 import EasyID3
from mutagen.id3 import ID3, APIC
def addMetaData(url, title, artist, album, track):
response = requests.get(url, stream=True)
with open('img.jpg', 'wb') as out_file:
shutil.copyfileobj(response.raw, out_file)
del response
audio = EasyID3(music_file.mp3)
audio['artist'] = artist
audio['title'] = title
audio['tracknumber'] = track
audio['album'] = album
audio.save()
audio = ID3(music_file.mp3)
with open('img.jpg', 'rb') as albumart:
audio['APIC'] = APIC(
encoding=3,
mime='image/jpeg',
type=3, desc=u'Cover',
data=albumart.read()
)
audio.save()
In 2nd case: 在第二种情况:
import requests
import shutil
from mutagen.id3 import ID3, TPE1, TIT2, TRCK, TALB, APIC
def addMetaData(url, title, artist, album, track):
response = requests.get(url, stream=True)
with open('img.jpg', 'wb') as out_file:
shutil.copyfileobj(response.raw, out_file)
del response
audio = ID3(music_file.mp3)
audio['TPE1'] = TPE1(encoding=3, text=artist)
audio['TIT2'] = TALB(encoding=3, text=title)
audio['TRCK'] = TRCK(encoding=3, text=track)
audio['TALB'] = TALB(encoding=3, text=album)
with open('img.jpg', 'rb') as albumart:
audio['APIC'] = APIC(
encoding=3,
mime='image/jpeg',
type=3, desc=u'Cover',
data=albumart.read()
)
audio.save()
Note: You can also directly embed the albumart using urllib2
without having to save it on disk first. 注意:您也可以使用
urllib2
直接嵌入albumart,而不必先将其保存在磁盘上。 Example: 例:
import urllib2
from mutagen.id3 import ID3, APIC
audio = ID3(music_file.mp3)
albumart = urllib2.urlopen(url)
audio['APIC'] = APIC(
encoding=3,
mime='image/jpeg',
type=3, desc=u'Cover',
data=albumart.read()
)
albumart.close()
audio.save()
You need to change the shutil call to instead write to the file you opened: 您需要更改shutil调用,而不是写入您打开的文件:
...
response = requests.get(url, stream=True)
with open('img.jpg', 'wb') as out_file:
out_file.write(response.raw)
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.