先放一个函数。
MP3添加封面 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 def set_song_metadata(ID, singer, song_name, album, pic): mp3_dir = os.path.join(get_my_music_dir(), singer + " - " + song_name + ".mp3") audio = ID3(mp3_dir) img = open(pic, 'rb') print(audio) audio.update_to_v23() # 把可能存在的旧版本升级为2.3 audio['APIC'] = APIC( # 插入专辑图片 encoding=0, mime='image/jpeg', type=3, # desc=u'Cover', data=img.read() ) audio['TIT2'] = TIT2( # 插入歌名 encoding=3, text=song_name ) audio['TPE1'] = TPE1( # 插入第一演奏家、歌手、等 encoding=3, text=singer ) audio['TALB'] = TALB( # 插入专辑名称 encoding=3, text=album ) audio.save() # 记得要保存 img.close()
注意点 这个是网上找的代码,找了几个都一样,主要改了两个地方。
第一个是img = open(pic, 'rb')
,将打开方式从r改成了rb,避免data=img.read()
报错。
第二个是
1 2 3 4 5 6 7 audio['APIC'] = APIC( # 插入专辑图片 encoding=0, mime='image/jpeg', type=3, # desc=u'Cover', data=img.read() )
中,将encoding=3
改为了encoding=0
,3是Encoding.UTF8,0是Encoding.LATIN1。
两者都能在Mp3tag上读取出来,但是只有Encoding.LATIN1能在电脑中有预览图,手机里没有测试。
MP3清除封面 1 2 3 4 5 6 7 8 9 10 def del_all_cover(mp3_dir): audio = ID3(mp3_dir) del_list=[] for i in audio2: a = re.search(r"APIC", i) if a: del_list.append(i) for i in del_list: del(audio[i]) audio.save()
audio虽然很像字典,但它毕竟不是字典,它是ID3对象,没有copy()方法,所以只能用这种方法来删除。
先这样。