mutagen: how to detect and embed album art in mp3, flac and mp4
Question: 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. 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?](http://stackoverflow.com/questions/409949/how-do-you-embed-album-art-
into-an-mp3-using-python)

How do I embed album art into other formats?

EDIT: embed 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()   
    


Answer: Embed flac:

    
    
    from mutagen.flac import File, 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
    

