Exemple #1
0
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']
Exemple #3
0
 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')
Exemple #4
0
 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'
Exemple #6
0
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,
         }
     }