From 0628d8df0eb59e1b47d8bc01cb9c3bd566829d6e Mon Sep 17 00:00:00 2001 From: Daniele Sluijters Date: Sun, 10 Apr 2011 14:51:01 +0200 Subject: [PATCH] Add initial version of the embed coverart plugin. This plugin allows users to embed the cover into the audio file. Probaly still has a few bugs but it should work in most cases right now. --- beetsplug/embedcoverart.py | 45 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 beetsplug/embedcoverart.py diff --git a/beetsplug/embedcoverart.py b/beetsplug/embedcoverart.py new file mode 100644 index 000000000..75ffafba8 --- /dev/null +++ b/beetsplug/embedcoverart.py @@ -0,0 +1,45 @@ +from beets.plugins import BeetsPlugin +from beets import mediafile + +import os, logging + +from email.mime.image import MIMEImage + +log = logging.getLogger('beets') +log.addHandler(logging.StreamHandler()) + + +class EmbedAlbumartPlugin(BeetsPlugin): + '''Allows albumart to be embedded into the actual files''' + + def __init__(self): + self.register_listener('loaded', self.loaded) + self.register_listener('album_imported', self.album_imported) + + def configure(self, config): + pass + + def loaded(self): + pass + + def album_imported(self, album): + albumart = album.artpath + ALLOWED_MIMES = ('jpeg','png') + + if albumart: + albumart_raw = open(albumart, 'rb').read() + img = MIMEImage(albumart_raw) + mime_img = img.get_content_subtype() + + if mime_img in ALLOWED_MIMES: + mime_type = 'image/%s' % mime_img + + for item in album.items(): + f = mediafile.MediaFile(item) + + if "mp3" in item.type: + f.albumart_mime = mime_type + + f.albumart_data = albumart_raw + f.save() +