From 0d6a487acd384aa395ec993dc23e394b2f489c3d Mon Sep 17 00:00:00 2001 From: Shadab Zafar Date: Fri, 5 Jun 2015 22:00:18 +0530 Subject: [PATCH] Began adding the Events entity Signed-off-by: Shadab Zafar --- musicbrainzngs/mbxml.py | 16 ++++++++++++++++ musicbrainzngs/musicbrainz.py | 12 +++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/musicbrainzngs/mbxml.py b/musicbrainzngs/mbxml.py index 0adfa4f..a3100a1 100644 --- a/musicbrainzngs/mbxml.py +++ b/musicbrainzngs/mbxml.py @@ -137,6 +137,7 @@ def parse_message(message): "artist": parse_artist, "label": parse_label, "place": parse_place, + "event": parse_event, "release": parse_release, "release-group": parse_release_group, "series": parse_series, @@ -153,6 +154,7 @@ def parse_message(message): "artist-list": parse_artist_list, "label-list": parse_label_list, "place-list": parse_place_list, + "event-list": parse_event_list, "release-list": parse_release_list, "release-group-list": parse_release_group_list, "series-list": parse_series_list, @@ -275,6 +277,20 @@ def parse_place(place): return result +def parse_event_list(el): + return [parse_event(e) for e in el] + +def parse_event(event): + result = {} + attribs = ["id", "type"] + elements = ["name", "time"] + inner_els = {"life-span": parse_lifespan} + + result.update(parse_attributes(attribs, event)) + result.update(parse_elements(elements, inner_els, event)) + + return result + def parse_label_list(ll): return [parse_label(l) for l in ll] diff --git a/musicbrainzngs/musicbrainz.py b/musicbrainzngs/musicbrainz.py index 7cf6769..a2181d7 100644 --- a/musicbrainzngs/musicbrainz.py +++ b/musicbrainzngs/musicbrainz.py @@ -27,7 +27,7 @@ # Constants for validation. -RELATABLE_TYPES = ['area', 'artist', 'label', 'place', 'recording', 'release', 'release-group', 'series', 'url', 'work'] +RELATABLE_TYPES = ['area', 'artist', 'label', 'place', 'event', 'recording', 'release', 'release-group', 'series', 'url', 'work'] RELATION_INCLUDES = [entity + '-rels' for entity in RELATABLE_TYPES] TAG_INCLUDES = ["tags", "user-tags"] RATING_INCLUDES = ["ratings", "user-ratings"] @@ -51,6 +51,7 @@ "aliases", "annotation" ] + RELATION_INCLUDES + TAG_INCLUDES + RATING_INCLUDES, 'place' : ["aliases", "annotation"] + RELATION_INCLUDES + TAG_INCLUDES, + 'event' : ["aliases"] + RELATION_INCLUDES, 'recording': [ "artists", "releases", # Subqueries "discids", "media", "artist-credits", "isrcs", @@ -825,6 +826,15 @@ def get_place_by_id(id, includes=[], release_status=[], release_type=[]): release_status, release_type) return _do_mb_query("place", id, includes, params) +@_docstring('event') +def get_event_by_id(id, includes=[], release_status=[], release_type=[]): + """Get the event with the MusicBrainz `id` as a dict with an 'event' key. + + *Available includes*: {includes}""" + params = _check_filter_and_make_params("event", includes, + release_status, release_type) + return _do_mb_query("event", id, includes, params) + @_docstring('recording') def get_recording_by_id(id, includes=[], release_status=[], release_type=[]): """Get the recording with the MusicBrainz `id` as a dict