Mutagen:如何在MP3、FLAC和MP4中检测和嵌入专辑封面

12

我希望能够检测音频文件中是否嵌入了专辑艺术封面,如果没有,就为该文件添加专辑艺术封面。我正在使用mutagen。

1) 检测专辑艺术封面。是否存在比这个伪代码更简单的方法:

from mutagen import File
audio = File('music.ext')
test each of audio.pictures, audio['covr'] and audio['APIC:']
    if doesn't raise an exception and isn't None, we found album art

2)我找到了一个关于将专辑封面嵌入mp3文件的方法: 使用Python如何将专辑封面嵌入MP3文件?

如何将专辑封面嵌入其他格式的文件中?

编辑:嵌入mp4文件

audio = MP4(filename)
data = open(albumart, 'rb').read()

covr = []
if albumart.endswith('png'):
    covr.append(MP4Cover(data, MP4Cover.FORMAT_PNG))
else:
    covr.append(MP4Cover(data, MP4Cover.FORMAT_JPEG))

audio.tags['covr'] = covr
audio.save()   
1个回答

4

嵌入flac文件:

from mutagen import File
from mutagen.flac import Picture, FLAC

def add_flac_cover(filename, albumart):
    audio = File(filename)
        
    image = Picture()
    image.type = 3
    if albumart.endswith('png'):
        mime = 'image/png'
    else:
        mime = 'image/jpeg'
    image.desc = 'front cover'
    with open(albumart, 'rb') as f: # better than open(albumart, 'rb').read() ?
        image.data = f.read()
    
    audio.add_picture(image)
    audio.save()

为了完整性,检测图片

def pict_test(audio):
    try: 
        x = audio.pictures
        if x:
            return True
    except Exception:
        pass  
    if 'covr' in audio or 'APIC:' in audio:
        return True
    return False

2
Picture() 函数来自哪里?你需要导入什么? - Danny
4
“从 mutagen.flac 导入 FLAC, Picture”,你应该在你的解决方案中包含这个。 - Danny
目前在mutagen.flac中没有File。那么File到底是什么,它从哪里来? - imrek
我的大部分文件都是M4A格式,包含低分辨率的250x250图片,我想将它们升级到500x500。我不确定这是否是正确的解决方案? - WinEunuuchs2Unix
变量mime被赋值但从未使用?看起来缺少image.mime = mime这行代码。 - WinEunuuchs2Unix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接