如何使用 eyed3 python 模块为 mp3 设置缩略图?

Posted

技术标签:

【中文标题】如何使用 eyed3 python 模块为 mp3 设置缩略图?【英文标题】:How to set thumbnail for mp3 using eyed3 python module? 【发布时间】:2021-04-16 11:16:24 【问题描述】:

我无法在 Python 中使用 eyed3 模块为 mp3 文件设置图像缩略图。 我尝试下一个脚本:

import eyed3
from eyed3.id3.frames import ImageFrame

th = 'url_to_my_pic'
file = 'to_mp3_pleer/file.mp3'

audiofile = eyed3.load(file)
audiofile.initTag()
audiofile.tag.frames = ImageFrame(image_url=th)
audiofile.tag.save()

但这对我文件中的缩略图没有任何作用。 在谷歌没有关于使用 eyed3 设置缩略图的信息。如何设置?

【问题讨论】:

【参考方案1】:

经过几个小时的 eyeD3 学习、谷歌搜索和文件封面实验,我想,我有一个适合你的解决方案。

您需要遵守以下规则:

使用 ID3v2.3 (在 eyeD3 中默认不是 v2.4); 为封面图片添加正确的描述(word cover); 将图像作为二进制传递;

我会给你一个代码示例,它在我的 Windows 10 上运行良好(应该也适用于其他平台)

import eyed3
import urllib.request

audiofile = eyed3.load("D:\\tmp\\tmp_mp3\\track_example.mp3")

audiofile.initTag(version=(2, 3, 0))  # version is important
# Other data for demonstration purpose only (from docs)
audiofile.tag.artist = "Token Entry"
audiofile.tag.album = "Free For All Comp LP"
audiofile.tag.album_artist = "Various Artists"
audiofile.tag.title = "The Edge"

# Read image from local file (for demonstration and future readers)
with open("D:\\tmp\\tmp_covers\\cover_2021-03-13.jpg", "rb") as image_file:
    imagedata = image_file.read()
audiofile.tag.images.set(3, imagedata, "image/jpeg", u"cover")
audiofile.tag.save()

# Get image from the Internet
response = urllib.request.urlopen("https://example.com/your-picture-here.jpg")
imagedata = response.read()
audiofile.tag.images.set(3, imagedata, "image/jpeg", u"cover")
audiofile.tag.save()

致谢:我的代码基于几个页面:1、2、3

【讨论】:

非常感谢。这很有帮助,尽管我通过 youtube-dl 参数使用了一种解决方法。

以上是关于如何使用 eyed3 python 模块为 mp3 设置缩略图?的主要内容,如果未能解决你的问题,请参考以下文章

[使用eyeD3从Python中的mp3文件检索歌词

python 使用eyed3在MP3文件上设置ID3标签

在 Python 中通过 eyeD3 更新 mp3 标签

eyeD3 -- 递归标签删除

pyinstaller打包资源文件及包含eyed3模块时提示找不到libmagic处理

使用 Python 访问 MP3 元数据 [关闭]