0%

修改 MP3 的 ID3Tags

ID3Tags是啥?

ID3Tags,简称 ID3 ,表示MP3文件曲目标签。
ID3位于一个mp3文件的开头或末尾的若干字节内,附加了关于该mp3的歌手,标题,专辑名称,年代,风格等信息,该信息就被称为ID3信息,ID3信息分为两个版本,v1和v2版。
其中v1版的ID3在mp3文件的末尾128字节,以TAG三个字符开头,后面跟上歌曲信息。v2版一般位于mp3的开头,可以存储歌词,该专辑的图片等大容量的信息。

ID3全称是啥?没有找到,懂得的小伙伴感谢留言告知。

思路

使用python第三方库,查看mp3当前id3tags,修改id3tags并保存。
找到了两个不错的python第三方库:

这里选择eyeD3,因为使用更简单。
使用到的参数和方法,参考eyed3.id3

实现

安装eyeD3

1
python3 -m pip install eyed3 -i https://pypi.tuna.tsinghua.edu.cn/simple/

命令行查看id3

1
2
eyeD3 -h
eyeD3 song.mp3

脚本查看id3

使用python脚本查看所有mp3的id3信息

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
37
#!/usr/bin/env python3
# coding: utf-8

import os

import eyed3

def get_audio_paths(dir_path):
audio_paths = []
for dirs, dirnames, files in os.walk(dir_path):
for file in files:
if file.endswith('.mp3'):
audio_paths.append(dirs+'/'+file)
return audio_paths

def show_id3(audio_path):
# load 和 save 时会打印出 Invalid date: ???????:36903863 ,可忽略
audio = eyed3.load(audio_path)
audio_name = audio_path.split('/')[-1]
if not audio.tag:
print('------ ' + audio_name + ' ------')
print('不存在id3')
print('------ ' + '------' + ' ------')
else:
print('------ ' + audio_name + ' ------')
if audio.tag.title:
print('title: ' + audio.tag.title)
if audio.tag.artist:
print('artist: ' + audio.tag.artist)
print('------ ' + '------' + ' ------')

if __name__ == '__main__':
audio_paths = get_audio_paths('./mp3')

# 显示id3信息
for audio_path in audio_paths:
show_id3(audio_path)

脚本修改id3

需求:已有200个mp3文件,id3信息都是广告。现在想要批量清除mp3文件现有的id3,然后根据文件名修改title,根据真实作者修改artist,根据真实封面修改封面。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def modify_id3(audio_path, title, artist ,img_path):
audio = eyed3.load(audio_path)
if not audio.tag:
audio.initTag()
else:
audio.tag.clear()
audio.tag.title = title
audio.tag.artist = artist
audio.tag.images.set(3, open(img_path,'rb').read(), 'image/jpeg')
audio.tag.save()


if __name__ == '__main__':
audio_paths = get_audio_paths('./mp3')

# 修改id3信息
for audio_path in audio_paths:
title = audio_path.split('/')[-1]
artist = '钱文忠'
img_path = './img.png' # 200x200
modify_id3(audio_path, title, artist ,img_path)
  • 本文作者: 好好学习的郝
  • 本文链接: https://www.voidking.com/dev-modify-mp3-id3tags/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!源站会及时更新知识点及修正错误,阅读体验也更好。欢迎分享,欢迎收藏~