merge in embedded album art changes from daenney

This commit is contained in:
Adrian Sampson 2011-04-10 11:52:08 -07:00
commit b4b3fd308a
2 changed files with 62 additions and 5 deletions

View file

@ -663,7 +663,7 @@ class MediaFile(object):
etc = StorageStyle('compilation')
)
albumartist = MediaField(
mp3 = StorageStyle('TXXX', id3_desc='Album Artist'),
mp3 = StorageStyle('TXXX', id3_desc=u'Album Artist'),
mp4 = StorageStyle(
'----:com.apple.iTunes:Album Artist',
as_type=str),
@ -671,12 +671,23 @@ class MediaFile(object):
StorageStyle('albumartist')]
)
albumtype = MediaField(
mp3 = StorageStyle('TXXX', id3_desc='MusicBrainz Album Type'),
mp3 = StorageStyle('TXXX', id3_desc=u'MusicBrainz Album Type'),
mp4 = StorageStyle(
'----:com.apple.iTunes:MusicBrainz Album Type',
as_type=str),
etc = StorageStyle('musicbrainz_albumtype')
)
albumart = MediaField(
mp3 = StorageStyle('APIC', id3_desc=u'Cover'),
)
albumart_mime = MediaField(
mp3 = StorageStyple('APIC', mime=u''),
)
albumart_data = MediaField(
mp3 = StorageStyple('APIC', data=u''),
mp4 = StorageStyle('covr', as_type=str),
etc = StorageStyle('picture')
)
# MusicBrainz IDs.
mb_trackid = MediaField(
@ -688,14 +699,14 @@ class MediaFile(object):
etc = StorageStyle('musicbrainz_trackid')
)
mb_albumid = MediaField(
mp3 = StorageStyle('TXXX', id3_desc='MusicBrainz Album Id'),
mp3 = StorageStyle('TXXX', id3_desc=u'MusicBrainz Album Id'),
mp4 = StorageStyle(
'----:com.apple.iTunes:MusicBrainz Album Id',
as_type=str),
etc = StorageStyle('musicbrainz_albumid')
)
mb_artistid = MediaField(
mp3 = StorageStyle('TXXX', id3_desc='MusicBrainz Artist Id'),
mp3 = StorageStyle('TXXX', id3_desc=u'MusicBrainz Artist Id'),
mp4 = StorageStyle(
'----:com.apple.iTunes:MusicBrainz Artist Id',
as_type=str),
@ -703,7 +714,7 @@ class MediaFile(object):
)
mb_albumartistid = MediaField(
mp3 = StorageStyle('TXXX',
id3_desc='MusicBrainz Album Artist Id'),
id3_desc=u'MusicBrainz Album Artist Id'),
mp4 = StorageStyle(
'----:com.apple.iTunes:MusicBrainz Album Artist Id',
as_type=str),

View file

@ -0,0 +1,46 @@
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 EmbedCoverArtPlugin(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()
else:
log.error('Sorry, a file of type %s is not allowed as coverart.' % mime_img)