Skip to content

Commit 0cb643f

Browse files
committed
Merge pull request #2529 from dosoe/master
Add composer_sort as a tag
2 parents fc560ac + e444143 commit 0cb643f

File tree

6 files changed

+43
-26
lines changed

6 files changed

+43
-26
lines changed

beets/autotag/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ def apply_item_metadata(item, track_info):
4949
item.lyricist = track_info.lyricist
5050
if track_info.composer is not None:
5151
item.composer = track_info.composer
52+
if track_info.composer_sort is not None:
53+
item.composer_sort = track_info.composer_sort
5254
if track_info.arranger is not None:
5355
item.arranger = track_info.arranger
5456

@@ -155,6 +157,8 @@ def apply_metadata(album_info, mapping):
155157
item.lyricist = track_info.lyricist
156158
if track_info.composer is not None:
157159
item.composer = track_info.composer
160+
if track_info.composer_sort is not None:
161+
item.composer_sort = track_info.composer_sort
158162
if track_info.arranger is not None:
159163
item.arranger = track_info.arranger
160164

beets/autotag/hooks.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ class TrackInfo(object):
144144
- ``data_url``: The data source release URL.
145145
- ``lyricist``: individual track lyricist name
146146
- ``composer``: individual track composer name
147+
- ``composer_sort``: individual track composer sort name
147148
- ``arranger`: individual track arranger name
148149
- ``track_alt``: alternative track number (tape, vinyl, etc.)
149150
@@ -155,8 +156,8 @@ def __init__(self, title, track_id, artist=None, artist_id=None,
155156
length=None, index=None, medium=None, medium_index=None,
156157
medium_total=None, artist_sort=None, disctitle=None,
157158
artist_credit=None, data_source=None, data_url=None,
158-
media=None, lyricist=None, composer=None, arranger=None,
159-
track_alt=None):
159+
media=None, lyricist=None, composer=None, composer_sort=None,
160+
arranger=None, track_alt=None):
160161
self.title = title
161162
self.track_id = track_id
162163
self.artist = artist
@@ -174,6 +175,7 @@ def __init__(self, title, track_id, artist=None, artist_id=None,
174175
self.data_url = data_url
175176
self.lyricist = lyricist
176177
self.composer = composer
178+
self.composer_sort = composer_sort
177179
self.arranger = arranger
178180
self.track_alt = track_alt
179181

beets/autotag/mb.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ def track_info(recording, index=None, medium=None, medium_index=None,
207207

208208
lyricist = []
209209
composer = []
210+
composer_sort = []
210211
for work_relation in recording.get('work-relation-list', ()):
211212
if work_relation['type'] != 'performance':
212213
continue
@@ -218,10 +219,13 @@ def track_info(recording, index=None, medium=None, medium_index=None,
218219
lyricist.append(artist_relation['artist']['name'])
219220
elif type == 'composer':
220221
composer.append(artist_relation['artist']['name'])
222+
composer_sort.append(
223+
artist_relation['artist']['sort-name'])
221224
if lyricist:
222225
info.lyricist = u', '.join(lyricist)
223226
if composer:
224227
info.composer = u', '.join(composer)
228+
info.composer_sort = u', '.join(composer_sort)
225229

226230
arranger = []
227231
for artist_relation in recording.get('artist-relation-list', ()):

beets/library.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,6 +417,7 @@ class Item(LibModel):
417417
'genre': types.STRING,
418418
'lyricist': types.STRING,
419419
'composer': types.STRING,
420+
'composer_sort': types.STRING,
420421
'arranger': types.STRING,
421422
'grouping': types.STRING,
422423
'year': types.PaddedInt(4),

beets/mediafile.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1638,13 +1638,18 @@ def update(self, dict):
16381638
StorageStyle('COMPOSER'),
16391639
ASFStorageStyle('WM/Composer'),
16401640
)
1641+
composer_sort = MediaField(
1642+
MP3StorageStyle('TSOC'),
1643+
MP4StorageStyle('soco'),
1644+
StorageStyle('COMPOSERSORT'),
1645+
ASFStorageStyle('WM/Composersortorder'),
1646+
)
16411647
arranger = MediaField(
16421648
MP3PeopleStorageStyle('TIPL', involvement='arranger'),
16431649
MP4StorageStyle('----:com.apple.iTunes:Arranger'),
16441650
StorageStyle('ARRANGER'),
16451651
ASFStorageStyle('beets/Arranger'),
16461652
)
1647-
16481653
grouping = MediaField(
16491654
MP3StorageStyle('TIT1'),
16501655
MP4StorageStyle('\xa9grp'),

test/test_mediafile.py

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -318,29 +318,29 @@ class ReadWriteTestBase(ArtTestMixin, GenreListTestMixin,
318318
"""
319319

320320
full_initial_tags = {
321-
'title': u'full',
322-
'artist': u'the artist',
323-
'album': u'the album',
324-
'genre': u'the genre',
325-
'composer': u'the composer',
326-
'grouping': u'the grouping',
327-
'year': 2001,
328-
'month': None,
329-
'day': None,
330-
'date': datetime.date(2001, 1, 1),
331-
'track': 2,
332-
'tracktotal': 3,
333-
'disc': 4,
334-
'disctotal': 5,
335-
'lyrics': u'the lyrics',
336-
'comments': u'the comments',
337-
'bpm': 6,
338-
'comp': True,
339-
'mb_trackid': '8b882575-08a5-4452-a7a7-cbb8a1531f9e',
340-
'mb_albumid': '9e873859-8aa4-4790-b985-5a953e8ef628',
341-
'mb_artistid': '7cf0ea9d-86b9-4dad-ba9e-2355a64899ea',
342-
'art': None,
343-
'label': u'the label',
321+
'title': u'full',
322+
'artist': u'the artist',
323+
'album': u'the album',
324+
'genre': u'the genre',
325+
'composer': u'the composer',
326+
'grouping': u'the grouping',
327+
'year': 2001,
328+
'month': None,
329+
'day': None,
330+
'date': datetime.date(2001, 1, 1),
331+
'track': 2,
332+
'tracktotal': 3,
333+
'disc': 4,
334+
'disctotal': 5,
335+
'lyrics': u'the lyrics',
336+
'comments': u'the comments',
337+
'bpm': 6,
338+
'comp': True,
339+
'mb_trackid': '8b882575-08a5-4452-a7a7-cbb8a1531f9e',
340+
'mb_albumid': '9e873859-8aa4-4790-b985-5a953e8ef628',
341+
'mb_artistid': '7cf0ea9d-86b9-4dad-ba9e-2355a64899ea',
342+
'art': None,
343+
'label': u'the label',
344344
}
345345

346346
tag_fields = [
@@ -350,6 +350,7 @@ class ReadWriteTestBase(ArtTestMixin, GenreListTestMixin,
350350
'genre',
351351
'lyricist',
352352
'composer',
353+
'composer_sort',
353354
'arranger',
354355
'grouping',
355356
'year',

0 commit comments

Comments
 (0)