mirror of
https://github.com/beetbox/beets.git
synced 2025-12-12 03:24:44 +01:00
merge in embedded album art changes from daenney
This commit is contained in:
commit
b4b3fd308a
2 changed files with 62 additions and 5 deletions
|
|
@ -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),
|
||||
|
|
|
|||
46
beetsplug/embedcoverart.py
Normal file
46
beetsplug/embedcoverart.py
Normal 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)
|
||||
Loading…
Reference in a new issue