IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

Python处理MP3的歌词和图片

超群.com的博客 2010-01-23 16:17:34 累计浏览 9,517 次
本机暂存

一些MP3播放器(包括iphone、ipod、itouch、blackberry等)可以在播放mp3的时候显示专辑图片、歌词等信息而不需要额外的图片文件和歌词文件,仅仅一个mp3文件就搞定,比较有意思。除了用专门的软件(比如itunes)来制作这样的mp3,我们还可以用程序来批量生成。

查阅mp3头信息ID3V2的技术文档,发现可以往ID3信息里面加入歌词和图片信息(可以在页面上查找Lyrics、Attached picture就能发现相应的内容)。有了官方格式上的支持,我们要做的就是把歌词和图片加入到MP3文件中去。

测试一些开源的软件包,发现一个比较可靠的:eyeD3,由python语言编写,直接上代码:

以下是代码片段:
#coding=utf-8
import eyeD3
import re
 
# mp3文件
mp3_file = '/path/to/foobar.mp3'
# lrc歌词文件
lrc_file = '/path/to/foobar.lrc'
# 专辑图片
pic_file = '/path/to/foobar.jpg'
 
# 实例化eyeD3
tag = eyeD3.Tag()
 
# 绑定到mp3文件
tag.link(mp3_file)
 
# 去掉原文件中可能存在的图片
tag.removeImage()
 
# 去掉原文件中可能存在的歌词
tag.removeLyrics()
 
# 设定编码,非常重要,否则不支持中文
tag.encoding = '\x01'
 
# 添加图片
tag.addImage(3, pic_file, u'')
 
# 添加歌词,注意要utf-8编码,去掉lrc中时间信息
tag.addLyrics(re.sub('(\[.*?\][\n]*)+', '', unicode(open(lrc_file, 'r')).read(), 'utf8')))
 
# 更新到文件
tag.update()

代码非常简单,需要注意的是设定编码,不然歌词就乱码了。有了eyeD3之后,可以写个爬虫,从网上抓下歌词和图片直接灌进MP3文件里面,剩下的就是享受了。

同分类推荐文章

  1. 一个冷门的速查日历方法 (2026-05-27 16:22:00)
  2. Stack Overflow: When We Stop Asking (2026-05-20 21:51:34)
  3. Use Obsidian Sync on Desktop without Installing Obsidian (2026-03-27 00:00:00)

查看更多 开发者 文章 →

建议继续学习

  1. 用Hyer来进行网站的抓取 (累计阅读 158,173)
  2. 配置Nginx+uwsgi更方便地部署python应用 (累计阅读 106,996)
  3. 程序员技术练级攻略 (累计阅读 35,210)
  4. python实现自动登录discuz论坛 (累计阅读 32,732)
  5. python编程细节──遍历dict的两种方法比较 (累计阅读 20,288)
  6. 每个程序员都应该学习使用Python或Ruby (累计阅读 17,828)
  7. Chrome和goagent的配置方法,你懂的 (累计阅读 16,691)
  8. 30分钟3300%性能提升――python+memcached网页优化小记 (累计阅读 13,669)
  9. 使用python爬虫抓站的一些技巧总结:进阶篇 (累计阅读 13,198)
  10. 我的PHP,Python和Ruby之路 (累计阅读 13,068)