mirror of
https://github.com/beetbox/beets.git
synced 2025-12-24 01:25:47 +01:00
List decorator gives single decorator
This commit is contained in:
parent
1f8710f993
commit
08ccdb5fb2
1 changed files with 18 additions and 10 deletions
|
|
@ -648,13 +648,6 @@ class MediaField(object):
|
|||
'arguments mp3, mp4, asf, and etc')
|
||||
self.styles = kwargs
|
||||
|
||||
|
||||
def listField(self):
|
||||
options = self.styles.copy()
|
||||
options['out_type'] = self.out_type
|
||||
return MediaFieldList(**options)
|
||||
|
||||
|
||||
def _styles(self, obj):
|
||||
if obj.type in ('mp3', 'asf'):
|
||||
styles = self.styles[obj.type]
|
||||
|
|
@ -683,7 +676,13 @@ class MediaField(object):
|
|||
for style in self._styles(obj):
|
||||
style.set(obj, val)
|
||||
|
||||
class MediaFieldList(MediaField):
|
||||
|
||||
class ListMediaField(MediaField):
|
||||
"""Property decorator that retrieves a list from a tag.
|
||||
|
||||
Uses ``get_list`` and set_list`` methods of its ``StorageStyle``
|
||||
strategies to do the actual work.
|
||||
"""
|
||||
|
||||
def __get__(self, mediafile, _):
|
||||
values = []
|
||||
|
|
@ -695,6 +694,15 @@ class MediaFieldList(MediaField):
|
|||
for style in self._styles(mediafile):
|
||||
style.set_list(mediafile, values)
|
||||
|
||||
def single_field(self):
|
||||
"""Returns a ``MediaField`` decorator that gets and sets the
|
||||
first item.
|
||||
"""
|
||||
options = self.styles.copy()
|
||||
options['out_type'] = self.out_type
|
||||
return MediaField(**options)
|
||||
|
||||
|
||||
|
||||
|
||||
class CompositeDateField(object):
|
||||
|
|
@ -1029,13 +1037,13 @@ class MediaFile(object):
|
|||
etc=StorageStyle('ALBUM'),
|
||||
asf=StorageStyle('WM/AlbumTitle'),
|
||||
)
|
||||
genre = MediaField(
|
||||
genres = ListMediaField(
|
||||
mp3=MP3ListStorageStyle('TCON'),
|
||||
mp4=MP4ListStorageStyle("\xa9gen"),
|
||||
etc=StorageStyle('GENRE'),
|
||||
asf=StorageStyle('WM/Genre'),
|
||||
)
|
||||
genres = genre.listField()
|
||||
genre = genres.single_field()
|
||||
|
||||
composer = MediaField(
|
||||
mp3=MP3StorageStyle('TCOM'),
|
||||
|
|
|
|||
Loading…
Reference in a new issue