def get_multiple_entities(entities): """Fetch multiple entities using their MBIDs. Args: entites: List of tuples containing the entity ID and the entity type. Returns: Dictionary containing the basic information related to the entities. { "id": uuid, "name/title": str, } Information related to the artists of release groups and the coordinates of the places is also included. """ entities_info = {} release_group_mbids = [ entity[0] for entity in filter( lambda entity: entity[1] == 'release_group', entities) ] artist_mbids = [ entity[0] for entity in filter(lambda entity: entity[1] == 'artist', entities) ] label_mbids = [ entity[0] for entity in filter(lambda entity: entity[1] == 'label', entities) ] place_mbids = [ entity[0] for entity in filter(lambda entity: entity[1] == 'place', entities) ] event_mbids = [ entity[0] for entity in filter(lambda entity: entity[1] == 'event', entities) ] work_mbids = [ entity[0] for entity in filter(lambda entity: entity[1] == 'work', entities) ] entities_info.update( fetch_multiple_release_groups( release_group_mbids, includes=['artists'], unknown_entities_for_missing=True, )) entities_info.update(fetch_multiple_artists(artist_mbids, )) entities_info.update(fetch_multiple_labels(label_mbids, )) entities_info.update( fetch_multiple_places( place_mbids, unknown_entities_for_missing=True, )) entities_info.update( fetch_multiple_events( event_mbids, unknown_entities_for_missing=True, )) entities_info.update(fetch_multiple_works(work_mbids, )) return entities_info
def test_fetch_release_groups_missing(self, engine): release_groups = mb_release_group.fetch_multiple_release_groups(mbids=[ '358bbed4-1717-3e1c-ba8e-af54d2d3a5d6', '358bbed4-1111-1111-1111-af54d2d3a5d6' ], ) assert list( release_groups.keys()) == ['358bbed4-1717-3e1c-ba8e-af54d2d3a5d6']
def test_fetch_release_groups(self): self.release_group_query.return_value = [releasegroup_numb_encore, releasegroup_collision_course] release_groups = mb_release_group.fetch_multiple_release_groups( mbids=['8ef859e3-feb2-4dd1-93da-22b91280d768', '7c1014eb-454c-3867-8854-3c95d265f8de'], ) self.assertEqual(len(release_groups), 2) self.assertEqual(release_groups['7c1014eb-454c-3867-8854-3c95d265f8de']['title'], 'Numb/Encore') self.assertEqual(release_groups['8ef859e3-feb2-4dd1-93da-22b91280d768']['title'], 'Collision Course')
def test_fetch_release_groups_empty(self): self.release_group_query.return_value = [] release_groups = mb_release_group.fetch_multiple_release_groups( mbids=['8ef859e3-feb2-4dd1-93da-22b91280d768', '7c1014eb-454c-3867-8854-3c95d265f8de'], includes=['artists', 'releases', 'release-group-rels', 'url-rels', 'work-rels', 'tags'], unknown_entities_for_missing=True ) self.assertEqual(release_groups['7c1014eb-454c-3867-8854-3c95d265f8de']['title'], unknown_release_group.name) self.assertEqual(release_groups['8ef859e3-feb2-4dd1-93da-22b91280d768']['title'], unknown_release_group.name)
def test_fetch_release_groups(self, engine): release_groups = mb_release_group.fetch_multiple_release_groups(mbids=[ '0f18ec88-aa87-38a9-8a65-f03d81763560', '1b36a363-eec6-35ba-b0ed-34a1f2f2cd82' ], ) assert len(release_groups) == 2 assert release_groups['0f18ec88-aa87-38a9-8a65-f03d81763560'][ 'title'] == 'Led Zeppelin' assert release_groups['1b36a363-eec6-35ba-b0ed-34a1f2f2cd82'][ 'title'] == 'Cosmic Thing'
def get_release_group_by_id(mbid): """Get release group using the MusicBrainz ID.""" key = cache.gen_key('release-group', mbid) release_group = cache.get(key) if not release_group: release_group = db.fetch_multiple_release_groups( [mbid], includes=['artists', 'releases', 'release-group-rels', 'url-rels', 'tags'], unknown_entities_for_missing=True, )[mbid] cache.set(key=key, val=release_group, time=DEFAULT_CACHE_EXPIRATION) return release_group_rel.process(release_group)
def test_fetch_release_groups_redirect(self, engine): release_groups = mb_release_group.fetch_multiple_release_groups( mbids=['358bbed4-1717-3e1c-ba8e-af54d2d3a5d6'], ) assert release_groups == { '358bbed4-1717-3e1c-ba8e-af54d2d3a5d6': { 'mbid': '8a01217e-6947-3927-a39b-6691104694f1', 'title': 'The College Dropout', 'first-release-year': 2003, 'type': 'Album', 'rating': 88, } }