总览

目前在中文网站上,搜索到关于eyed3的资料较少,而且大多都是过时的,因此专门写了这篇教程。

本教程适用的eyed3版本为0.9.6, 其他版本可能会有不同。

版本
eyed3主要使用id3来修改歌曲信息,id3版本主要用的都是v2.3.0和v2.4.0
然而,id3v2.4.0的即使已经推出了超过20年,它的兼容性还是不够,例如在Windows的任务管理器、媒体播放器(新版)中仍然无法正确读取封面,因此,我们需要使用id3v2.3.0。

关于eyed3与eyeD3的区别
eyed3是一个python的库,而eyeD3是一个命令行工具,他们都在一个python模块中
区别是eyed3可以导入,但是eyeD3不可以,只能在命令行中使用

安装

使用pip install eyed3

使用

基本命令
以下是基本的操作命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import eyed3
# 设置文件路径
mp3file = 'xxx.mp3'

# 加载歌曲文件
audio = eyed3.load(mp3file)

# 给没有信息的歌曲设置信息(会覆盖原有信息)
if not audio.tag:
audio.initTag(version=(2, 3, 0))

# 歌曲名称(str),
audio.tag.title = name

# 歌手名称(str)
audio.tag.artist = singer

# 专辑名称(str)
audio.tag.album = album

# 获取封面(description通常为Cover,但是我们为了保险再获取一次)(str)
# 如果第一行报错则说明没有封面
desc = audio.tag.images._fs[b'APIC'][0].description
audio.tag.images.get(desc)

# 修改封面(传参分别为写入模式、图片的二进制数据、图片的类型、图片的描述)
audio.tag.images.set(3, image_data, 'image/jpeg', u'Cover')

# 获取歌词(一般都是传入'',有些可能会不一样)
audio.tag.lyrics.get('')

# 修改歌词
audio.tag.lyrics.set(lyrics)

# 保存修改(默认为v2.4.0,但是我们因为兼容性使用v2.3.0)
audio.tag.save(version=(2, 3, 0))

进阶使用
id3的类型一共分为两种:str字符串和bytes二进制
str的数据可以使用audio.tag.xxx来获取,给这个赋值来修改(xxx代表信息名称,如title、artist、album等)
byte的数据可以使用audio.tag.xxx.get(desc)来获取,用audio.tag.set()来修改(xxx代表信息名称,如images、lyrics,desc代表信息的描述)

后记

当初在翻阅资料的时候大多数都是英文版的,主要在stackoverflow上搜索,因为资料较少找了快半天
希望这篇教程可以帮到你,如果有什么问题,可以通过邮件、telegram或者直接评论区联系我
顺便附上我利用这个原理写的音乐下载器,可以拿来对照研究下