Skip to content

Commit 1047796

Browse files
iron-progphw
authored andcommitted
Add musicbrainz_composerid tag
1 parent 77c2deb commit 1047796

File tree

6 files changed

+31
-0
lines changed

6 files changed

+31
-0
lines changed

picard/const/tags.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -708,6 +708,12 @@
708708
longdesc=N_('The MusicBrainz Identifier (MBID) for the Work if a related work exists.'),
709709
is_multi_value=True, # TODO: Need to confirm multi-value.
710710
),
711+
TagVar(
712+
'musicbrainz_composerid',
713+
shortdesc=N_('Composer MBID'),
714+
longdesc=N_('The MusicBrainz Identifier (MBID) for the composer(s).'),
715+
is_multi_value=True,
716+
),
711717
TagVar(
712718
'musicip_fingerprint',
713719
shortdesc=N_('MusicIP Fingerprint'),

picard/formats/asf.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ class ASFFile(File):
166166
'musicbrainz_trmid': 'MusicBrainz/TRM Id',
167167
'musicbrainz_discid': 'MusicBrainz/Disc Id',
168168
'musicbrainz_workid': 'MusicBrainz/Work Id',
169+
'musicbrainz_composerid': 'MusicBrainz/Composer Id',
169170
'musicbrainz_releasegroupid': 'MusicBrainz/Release Group Id',
170171
'musicbrainz_originalalbumid': 'MusicBrainz/Original Album Id',
171172
'musicbrainz_originalartistid': 'MusicBrainz/Original Artist Id',

picard/formats/id3.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ class ID3File(File):
198198
'MusicBrainz Release Track Id': 'musicbrainz_trackid',
199199
'MusicBrainz Disc Id': 'musicbrainz_discid',
200200
'MusicBrainz Work Id': 'musicbrainz_workid',
201+
'MusicBrainz Composer Id': 'musicbrainz_composerid',
201202
'MusicBrainz Release Group Id': 'musicbrainz_releasegroupid',
202203
'MusicBrainz Original Album Id': 'musicbrainz_originalalbumid',
203204
'MusicBrainz Original Artist Id': 'musicbrainz_originalartistid',

picard/formats/mp4.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ class MP4File(File):
126126
'----:com.apple.iTunes:MusicBrainz Disc Id': 'musicbrainz_discid',
127127
'----:com.apple.iTunes:MusicBrainz TRM Id': 'musicbrainz_trmid',
128128
'----:com.apple.iTunes:MusicBrainz Work Id': 'musicbrainz_workid',
129+
'----:com.apple.iTunes:MusicBrainz Composer Id': 'musicbrainz_composerid',
129130
'----:com.apple.iTunes:MusicBrainz Release Group Id': 'musicbrainz_releasegroupid',
130131
'----:com.apple.iTunes:MusicBrainz Release Track Id': 'musicbrainz_trackid',
131132
'----:com.apple.iTunes:MusicBrainz Original Album Id': 'musicbrainz_originalalbumid',

picard/mbjson.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,11 @@ def _relations_to_metadata_target_type_artist(relation, m, context):
178178
if context.instrumental and name == 'lyricist':
179179
return
180180
m.add_unique(name, translated_name)
181+
artist_id = artist.get('id')
181182
if name == 'composer':
182183
m.add_unique('composersort', sort_name)
184+
if artist_id:
185+
m.add_unique('musicbrainz_composerid', artist_id)
183186
elif name == 'lyricist':
184187
m.add_unique('~lyricistsort', sort_name)
185188
elif name == 'writer':

test/test_mbjson.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1052,3 +1052,22 @@ def test_other_relation(self):
10521052
}
10531053
_relations_to_metadata([relation], m)
10541054
self.assertNotIn('~broadcast_date', m)
1055+
1056+
1057+
class RelationsToMetadataTargetTypeArtistTest(PicardTestCase):
1058+
def test_composer_adds_musicbrainz_composerid(self):
1059+
m = Metadata()
1060+
relation = {
1061+
'type': 'composer',
1062+
'target-type': 'artist',
1063+
'artist': {
1064+
'id': '12345678-1234-1234-1234-123456789abc',
1065+
'name': 'Ludwig van Beethoven',
1066+
'sort-name': 'Beethoven, Ludwig van',
1067+
},
1068+
}
1069+
1070+
_relations_to_metadata([relation], m)
1071+
1072+
self.assertEqual(m.getall('composer'), ['Ludwig van Beethoven'])
1073+
self.assertEqual(m.getall('musicbrainz_composerid'), ['12345678-1234-1234-1234-123456789abc'])

0 commit comments

Comments
 (0)