简体   繁体   English

mutagen:如何在 mp3、flac 和 mp4 中检测和嵌入专辑封面

[英]mutagen: how to detect and embed album art in mp3, flac and mp4

I'd like to be able to detect whether an audio file has embedded album art and, if not, add album art to that file.我希望能够检测音频文件是否嵌入了专辑封面,如果没有,则将专辑封面添加到该文件中。 I'm using mutagen我正在使用诱变剂

1) Detecting album art. 1) 检测专辑封面。 Is there a simpler method than this pseudo code:有没有比这个伪代码更简单的方法:

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) I found this for embedding album art into an mp3 file: How do you embed album art into an MP3 using Python? 2) 我发现这个是为了将专辑封面嵌入到 mp3 文件中: How do you embed album art into an MP3 using Python?

How do I embed album art into other formats?如何将专辑封面嵌入其他格式?

EDIT: embed mp4编辑:嵌入 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()   

Embed flac:嵌入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()

For completeness, detect picture为了完整性,检测图片

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM