Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Missing attributes #282

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions musicbrainzngs/mbxml.py
Original file line number Diff line number Diff line change
Expand Up @@ -495,7 +495,7 @@ def parse_release_group(rg):
def parse_recording(recording):
result = {}
attribs = ["id", "ext:score"]
elements = ["title", "length", "user-rating", "disambiguation", "video"]
elements = ["title", "length", "user-rating", "disambiguation", "video", "first-release-date"]
inner_els = {"artist-credit": parse_artist_credit,
"release-list": parse_release_list,
"tag-list": parse_tag_list,
Expand Down Expand Up @@ -548,7 +548,8 @@ def parse_work(work):
"iswc-list": parse_element_list,
"relation-list": parse_relation_list,
"annotation": parse_response_message,
"attribute-list": parse_work_attribute_list
"attribute-list": parse_work_attribute_list,
"language-list": parse_element_list,
}

result.update(parse_attributes(attribs, work))
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?><metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><recording id="f606f733-c1eb-43f3-93c1-71994ea611e3"><title>Shades of Gray</title><length>259600</length><relation-list target-type="artist"><relation type="producer" type-id="5c0ceac3-feb4-41f0-868d-dc06f6e27fc0"><target>09b1131d-9803-4acf-8b3c-3438e6c2b9c7</target><direction>backward</direction><artist id="09b1131d-9803-4acf-8b3c-3438e6c2b9c7"><name>Tom Jung</name><sort-name>Jung, Tom</sort-name></artist></relation><relation type-id="a01ee869-80a8-45ef-9447-c59e91aa7926" type="recording"><target>09b1131d-9803-4acf-8b3c-3438e6c2b9c7</target><direction>backward</direction><artist id="09b1131d-9803-4acf-8b3c-3438e6c2b9c7"><name>Tom Jung</name><sort-name>Jung, Tom</sort-name></artist></relation><relation type="instrument" type-id="59054b12-01ac-43ee-a618-285fd397e461"><target>83c6ecce-ebc2-4064-ad28-49c7354469f4</target><direction>backward</direction><attribute-list><attribute credited-as="Yamaha and Steinway pianos">piano</attribute></attribute-list><artist id="83c6ecce-ebc2-4064-ad28-49c7354469f4"><name>Billy Barber</name><sort-name>Barber, Billy</sort-name></artist></relation><relation type="producer" type-id="5c0ceac3-feb4-41f0-868d-dc06f6e27fc0"><target>83c6ecce-ebc2-4064-ad28-49c7354469f4</target><direction>backward</direction><artist id="83c6ecce-ebc2-4064-ad28-49c7354469f4"><name>Billy Barber</name><sort-name>Barber, Billy</sort-name></artist></relation></relation-list></recording></metadata>
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><recording id="f606f733-c1eb-43f3-93c1-71994ea611e3"><title>Shades of Gray</title><length>259600</length><first-release-date>1984</first-release-date><relation-list target-type="artist"><relation type="instrument" type-id="59054b12-01ac-43ee-a618-285fd397e461"><target>83c6ecce-ebc2-4064-ad28-49c7354469f4</target><direction>backward</direction><attribute-list><attribute type-id="b3eac5f9-7859-4416-ac39-7154e2e8d348" credited-as="Yamaha and Steinway pianos">piano</attribute></attribute-list><artist id="83c6ecce-ebc2-4064-ad28-49c7354469f4" type="Person" type-id="b6e035f4-3ce9-331c-97df-83397230b0df"><name>Billy Barber</name><sort-name>Barber, Billy</sort-name></artist></relation><relation type="producer" type-id="5c0ceac3-feb4-41f0-868d-dc06f6e27fc0"><target>83c6ecce-ebc2-4064-ad28-49c7354469f4</target><direction>backward</direction><artist id="83c6ecce-ebc2-4064-ad28-49c7354469f4" type="Person" type-id="b6e035f4-3ce9-331c-97df-83397230b0df"><name>Billy Barber</name><sort-name>Barber, Billy</sort-name></artist></relation><relation type="producer" type-id="5c0ceac3-feb4-41f0-868d-dc06f6e27fc0"><target>09b1131d-9803-4acf-8b3c-3438e6c2b9c7</target><direction>backward</direction><artist id="09b1131d-9803-4acf-8b3c-3438e6c2b9c7" type="Person" type-id="b6e035f4-3ce9-331c-97df-83397230b0df"><name>Tom Jung</name><sort-name>Jung, Tom</sort-name></artist></relation><relation type="recording" type-id="a01ee869-80a8-45ef-9447-c59e91aa7926"><target>09b1131d-9803-4acf-8b3c-3438e6c2b9c7</target><direction>backward</direction><artist id="09b1131d-9803-4acf-8b3c-3438e6c2b9c7" type="Person" type-id="b6e035f4-3ce9-331c-97df-83397230b0df"><name>Tom Jung</name><sort-name>Jung, Tom</sort-name></artist></relation></relation-list></recording></metadata>
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?><metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><work type="Cantata" id="72c9aad2-3c95-4e3e-8a01-3974f8fef8eb"><title>Cantata, BuxWV 1 &quot;Accedite gentes, accurite populi&quot;</title><language>lat</language><relation-list target-type="series"><relation type="part of" type-id="b0d44366-cdf0-3acb-bee6-0f65a77a6ef0"><target>0790fa51-15d9-40a2-bca9-9c8eaaa96bef</target><ordering-key>1</ordering-key><direction>backward</direction><attribute-list><attribute value="BuxWV 1">number</attribute></attribute-list><series type="Catalogue" id="0790fa51-15d9-40a2-bca9-9c8eaaa96bef"><name>Buxtehude-Werke-Verzeichnis</name></series></relation></relation-list></work></metadata>
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><work id="72c9aad2-3c95-4e3e-8a01-3974f8fef8eb" type="Cantata" type-id="0db2f555-15f9-393f-af4c-739db5711146"><title>Cantata, BuxWV 1 "Accedite gentes, accurite populi"</title><language>lat</language><language-list><language>lat</language></language-list><relation-list target-type="series"><relation type="part of" type-id="b0d44366-cdf0-3acb-bee6-0f65a77a6ef0"><target>0790fa51-15d9-40a2-bca9-9c8eaaa96bef</target><ordering-key>1</ordering-key><direction>backward</direction><attribute-list><attribute type-id="a59c5830-5ec7-38fe-9a21-c7ea54f6650a" value="BuxWV 1">number</attribute></attribute-list><series id="0790fa51-15d9-40a2-bca9-9c8eaaa96bef" type="Catalogue" type-id="49482ff0-fc9e-3b8c-a2d0-30e84d9df002"><name>Buxtehude-Werke-Verzeichnis</name></series></relation></relation-list></work></metadata>
16 changes: 13 additions & 3 deletions test/test_mbxml_recording.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,20 @@ def testRecordingRelationCreditedAs(self):

self.assertEqual(4, len(rels))
# Original attributes
attributes = rels[2]["attribute-list"]
print(rels[0])
print(rels[1])
print(rels[2])
print(rels[3])
attributes = rels[0]["attribute-list"]
self.assertEqual("piano", attributes[0])

# New attribute dict format
attributes = rels[2]["attributes"]
expected = {"attribute": "piano", "credited-as": "Yamaha and Steinway pianos"}
attributes = rels[0]["attributes"]
expected = {"attribute": "piano",
"credited-as": "Yamaha and Steinway pianos",
"type-id": "b3eac5f9-7859-4416-ac39-7154e2e8d348"}
self.assertEqual(expected, attributes[0])

def testFirstReleaseDate(self):
res = _common.open_and_parse_test_data(self.datadir, "f606f733-c1eb-43f3-93c1-71994ea611e3-artist-rels.xml")
self.assertEqual(res["recording"]["first-release-date"], "1984")
11 changes: 9 additions & 2 deletions test/test_mbxml_work.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ def testWorkAliases(self):
self.assertEqual(a1["alias"], 'Symphony No. 3, Op. 55 "Eroica"')
self.assertEqual(a1["sort-name"], 'Symphony No. 3, Op. 55 "Eroica"')


res = _common.open_and_parse_test_data(self.datadir, "3d7c7cd2-da79-37f4-98b8-ccfb1a4ac6c4-aliases.xml")
aliases = res["work"]["alias-list"]
self.assertEqual(len(aliases), 10)
Expand Down Expand Up @@ -65,5 +64,13 @@ def testWorkRelationAttributes(self):

# New attribute dict format
attributes = rels[0]["attributes"]
expected = {"attribute": "number", "value": "BuxWV 1"}
expected = {"attribute": "number",
"value": "BuxWV 1",
"type-id": "a59c5830-5ec7-38fe-9a21-c7ea54f6650a"}
self.assertEqual(expected, attributes[0])

def testWorkLanguage(self):
res = _common.open_and_parse_test_data(self.datadir, "72c9aad2-3c95-4e3e-8a01-3974f8fef8eb-series-rels.xml")
work = res["work"]
self.assertEqual(work["language"], "lat")
self.assertEqual(work["language-list"], ["lat"])