From af3e4d6288ba6f7f183b705b0d1a3c1f1f9ab7ca Mon Sep 17 00:00:00 2001 From: Sophist Date: Tue, 11 Feb 2014 18:18:44 +0000 Subject: [PATCH] Add Work Tag ... See http://forums.musicbrainz.org/viewtopic.php?pid=24929 for requirements discussion. --- picard/formats/asf.py | 1 + picard/formats/id3.py | 1 + picard/formats/mp4.py | 1 + picard/mbxml.py | 2 ++ picard/util/tags.py | 1 + test/test_mbxml.py | 2 ++ 6 files changed, 8 insertions(+) diff --git a/picard/formats/asf.py b/picard/formats/asf.py index e63a733a6..f78ff782c 100644 --- a/picard/formats/asf.py +++ b/picard/formats/asf.py @@ -128,6 +128,7 @@ class ASFFile(File): 'djmixer': 'WM/DJMixer', 'mixer': 'WM/Mixer', 'artists': 'WM/ARTISTS', + 'work': 'WM/Work', } __RTRANS = dict([(b, a) for a, b in __TRANS.items()]) diff --git a/picard/formats/id3.py b/picard/formats/id3.py index 692493a40..a1acf327b 100644 --- a/picard/formats/id3.py +++ b/picard/formats/id3.py @@ -157,6 +157,7 @@ class ID3File(File): 'ASIN': 'asin', 'MusicMagic Fingerprint': 'musicip_fingerprint', 'Artists': 'artists', + 'Work': 'work', } __rtranslate_freetext = dict([(v, k) for k, v in __translate_freetext.iteritems()]) diff --git a/picard/formats/mp4.py b/picard/formats/mp4.py index 1849d0541..91df4fed4 100644 --- a/picard/formats/mp4.py +++ b/picard/formats/mp4.py @@ -100,6 +100,7 @@ class MP4File(File): "----:com.apple.iTunes:SCRIPT": "script", "----:com.apple.iTunes:LANGUAGE": "language", "----:com.apple.iTunes:ARTISTS": "artists", + "----:com.apple.iTunes:WORK": "work", } __r_freeform_tags = dict([(v, k) for k, v in __freeform_tags.iteritems()]) diff --git a/picard/mbxml.py b/picard/mbxml.py index 9e79b13e7..1721926d7 100644 --- a/picard/mbxml.py +++ b/picard/mbxml.py @@ -260,6 +260,8 @@ def work_to_metadata(work, m): m.add("musicbrainz_workid", work.attribs['id']) if 'language' in work.children: m.add_unique("language", work.language[0].text) + if 'title' in work.children: + m.add("work", work.title[0].text) if 'relation_list' in work.children: _relations_to_metadata(work.relation_list, m) diff --git a/picard/util/tags.py b/picard/util/tags.py index 5319c8f49..6c88c58ab 100644 --- a/picard/util/tags.py +++ b/picard/util/tags.py @@ -87,6 +87,7 @@ TAG_NAMES = { '~length': N_('Length'), '~rating': N_('Rating'), 'artists': N_('Artists'), + 'work': N_('Work'), } diff --git a/test/test_mbxml.py b/test/test_mbxml.py index c0e7fd69c..39968d975 100644 --- a/test/test_mbxml.py +++ b/test/test_mbxml.py @@ -54,6 +54,7 @@ class TrackTest(unittest.TestCase): 'relation_list': [XmlNode(attribs={'target_type': 'work'}, children={ 'relation': [XmlNode(attribs={'type': 'performance'}, children={ 'work': [XmlNode(attribs={'id': 'workid123'}, children={ + 'title': [XmlNode(text='Bar')] 'language': [XmlNode(text='eng')] })] })] @@ -83,6 +84,7 @@ class TrackTest(unittest.TestCase): self.assertEqual('Foo Bar & Baz', m['artist']) self.assertEqual('Bar, Foo & Baz', m['artistsort']) self.assertEqual('workid123', m['musicbrainz_workid']) + self.assertEqual('Bar', m['work']) self.assertEqual('eng', m['language'])