Artistas en entidades relacionadas
This commit is contained in:
@@ -3,7 +3,6 @@ from utils import pretty_print_json
|
||||
|
||||
|
||||
def map_artist(mb_artist):
|
||||
pretty_print_json(mb_artist.get('tags'))
|
||||
return {
|
||||
'id': mb_artist.get('id'),
|
||||
'name': mb_artist.get('name'),
|
||||
@@ -15,6 +14,16 @@ def map_artist(mb_artist):
|
||||
}
|
||||
|
||||
|
||||
def map_artist_credit(mb_artist_credit):
|
||||
pretty_print_json(mb_artist_credit)
|
||||
return {
|
||||
'id': mb_artist_credit.get('artist').get('id'),
|
||||
'name': mb_artist_credit.get('artist').get('name'),
|
||||
'sort_name': mb_artist_credit.get('artist').get('sort_name'),
|
||||
'disambiguation': mb_artist_credit.get('artist').get('disambiguation'),
|
||||
}
|
||||
|
||||
|
||||
def map_disc(mb_disc):
|
||||
disc = {
|
||||
'id': mb_disc.get('id'),
|
||||
@@ -22,7 +31,8 @@ def map_disc(mb_disc):
|
||||
'disambiguation': mb_disc.get('disambiguation'),
|
||||
'first_release_date': mb_disc.get('first_release_date'),
|
||||
'primary_type': mb_disc.get('primary_type'),
|
||||
'cover_art': get_cover_art_disc(mb_disc.get('id'))
|
||||
'cover_art': get_cover_art_disc(mb_disc.get('id')),
|
||||
'artist': [map_artist_credit(c) for c in mb_disc.get('artist_credit')]
|
||||
}
|
||||
|
||||
if len(mb_disc.get('secondary_types', [])) > 0:
|
||||
@@ -39,7 +49,8 @@ def map_release(mb_release):
|
||||
'status': mb_release.get('status'),
|
||||
'country': mb_release.get('country'),
|
||||
'date': mb_release.get('date'),
|
||||
'cover_art': get_cover_art_release(mb_release.get('id'))
|
||||
'cover_art': get_cover_art_release(mb_release.get('id')),
|
||||
'artist': [map_artist_credit(c) for c in mb_release.get('artist_credit')]
|
||||
}
|
||||
|
||||
|
||||
@@ -49,7 +60,8 @@ def map_recording(mb_recording):
|
||||
'title': mb_recording.get('title'),
|
||||
'disambiguation': mb_recording.get('disambiguation'),
|
||||
'video': mb_recording.get('video'),
|
||||
'length': mb_recording.get('length')
|
||||
'length': mb_recording.get('length'),
|
||||
'artist': [map_artist_credit(c) for c in mb_recording.get('artist_credit')]
|
||||
}
|
||||
|
||||
|
||||
@@ -96,7 +108,7 @@ def get_artist(mbid):
|
||||
|
||||
|
||||
def get_disc(mbid):
|
||||
mb_disc = mb.get_release_group_by_mbid(mbid)
|
||||
mb_disc = mb.get_release_group_by_mbid(mbid, includes=['artists'])
|
||||
if 'error' in mb_disc:
|
||||
return mb_disc
|
||||
|
||||
@@ -104,7 +116,7 @@ def get_disc(mbid):
|
||||
|
||||
|
||||
def get_discs_of_artist(mbid, limit, page):
|
||||
mb_discs = mb.browse_release_groups(params={'artist': mbid}, limit=limit, offset=limit * (page - 1))
|
||||
mb_discs = mb.browse_release_groups(params={'artist': mbid}, includes=['artist-credits'], limit=limit, offset=limit * (page - 1))
|
||||
if 'error' in mb_discs:
|
||||
return mb_discs
|
||||
|
||||
@@ -126,7 +138,7 @@ def get_artist_of_disc(mbid, limit, page):
|
||||
|
||||
|
||||
def get_release(mbid):
|
||||
mb_release = mb.get_release_by_mbid(mbid)
|
||||
mb_release = mb.get_release_by_mbid(mbid, includes=['artists'])
|
||||
if 'error' in mb_release:
|
||||
return mb_release
|
||||
|
||||
@@ -134,7 +146,7 @@ def get_release(mbid):
|
||||
|
||||
|
||||
def get_releases_of_disc(mbid, limit, page):
|
||||
mb_releases = mb.browse_releases(params={'release-group': mbid}, limit=limit, offset=limit * (page - 1))
|
||||
mb_releases = mb.browse_releases(params={'release-group': mbid}, includes=['artist-credits'], limit=limit, offset=limit * (page - 1))
|
||||
if 'error' in mb_releases:
|
||||
return mb_releases
|
||||
|
||||
@@ -156,7 +168,7 @@ def get_artist_of_release(mbid, limit, page):
|
||||
|
||||
|
||||
def get_recording(mbid):
|
||||
mb_recording = mb.get_recording_by_mbid(mbid)
|
||||
mb_recording = mb.get_recording_by_mbid(mbid, includes=['artists'])
|
||||
if 'error' in mb_recording:
|
||||
return mb_recording
|
||||
|
||||
@@ -164,7 +176,7 @@ def get_recording(mbid):
|
||||
|
||||
|
||||
def get_recordings_of_release(mbid, limit, page):
|
||||
mb_recordings = mb.browse_recordings(params={'release': mbid}, limit=limit, offset=limit * (page - 1))
|
||||
mb_recordings = mb.browse_recordings(params={'release': mbid}, includes=['artist-credits'], limit=limit, offset=limit * (page - 1))
|
||||
if 'error' in mb_recordings:
|
||||
return mb_recordings
|
||||
|
||||
@@ -175,7 +187,7 @@ def get_recordings_of_release(mbid, limit, page):
|
||||
|
||||
|
||||
def get_release_of_recording(mbid, limit, page):
|
||||
mb_releases = mb.browse_releases(params={'recording': mbid}, limit=limit, offset=limit * (page - 1))
|
||||
mb_releases = mb.browse_releases(params={'recording': mbid}, includes=['artists-credits'], limit=limit, offset=limit * (page - 1))
|
||||
if 'error' in mb_releases:
|
||||
return mb_releases
|
||||
|
||||
@@ -228,6 +240,8 @@ def get_cover_art_recording(mbid):
|
||||
|
||||
def search_artist(query, limit, page):
|
||||
mb_artists = mb.search_artist(query=query, limit=limit, offset=limit * (page - 1))
|
||||
if 'error' in mb_artists:
|
||||
return mb_artists
|
||||
|
||||
return {
|
||||
'paginate': paginate(mb_artists['count'], limit, page),
|
||||
@@ -236,7 +250,7 @@ def search_artist(query, limit, page):
|
||||
|
||||
|
||||
def search_disc(query, limit, page):
|
||||
mb_discs = mb.search_release_group(query=query, limit=limit, offset=limit * (page - 1))
|
||||
mb_discs = mb.search_release_group(query=query, includes=['artist'], limit=limit, offset=limit * (page - 1))
|
||||
|
||||
return {
|
||||
'paginate': paginate(mb_discs['count'], limit, page),
|
||||
@@ -245,7 +259,7 @@ def search_disc(query, limit, page):
|
||||
|
||||
|
||||
def search_release(query, limit, page):
|
||||
mb_releases = mb.search_release(query=query, limit=limit, offset=limit * (page - 1))
|
||||
mb_releases = mb.search_release(query=query, includes=['artist'], limit=limit, offset=limit * (page - 1))
|
||||
|
||||
return {
|
||||
'paginate': paginate(mb_releases['count'], limit, page),
|
||||
@@ -254,7 +268,7 @@ def search_release(query, limit, page):
|
||||
|
||||
|
||||
def search_recording(query, limit, page):
|
||||
mb_recording = mb.search_recording(query=query, limit=limit, offset=limit * (page - 1))
|
||||
mb_recording = mb.search_recording(query=query, includes=['artist'], limit=limit, offset=limit * (page - 1))
|
||||
|
||||
return {
|
||||
'paginate': paginate(mb_recording['count'], limit, page),
|
||||
|
||||
@@ -92,7 +92,7 @@ def _get(entity_type, mbid, includes=None):
|
||||
return _do_request(f'{_mb_host}/{entity_type}/{mbid}?inc={_includes}')
|
||||
|
||||
|
||||
def _search(entity_type, query, limit=25, offset=0):
|
||||
def _search(entity_type, query, includes=None, limit=25, offset=0):
|
||||
"""Does a search of an entity to musicbrainz
|
||||
|
||||
:param str entity_type: Type of the entity (artist, release, recording...)
|
||||
@@ -104,14 +104,17 @@ def _search(entity_type, query, limit=25, offset=0):
|
||||
:rtype: dict
|
||||
"""
|
||||
|
||||
_log.info(f'Searching {entity_type} with query "{query}" at offset {offset} with limit of {limit}')
|
||||
_log.info(f'Searching {entity_type} with query "{query}" at offset {offset} with limit of {limit} with includes {includes}')
|
||||
|
||||
if limit >= 0 and offset >= 0:
|
||||
_query = urlencode({'query': query, 'limit': limit, 'offset': offset})
|
||||
_query = {'query': query, 'limit': limit, 'offset': offset}
|
||||
else:
|
||||
_query = urlencode({'query': query})
|
||||
_query = {'query': query}
|
||||
|
||||
return _do_request(f'{_mb_host}/{entity_type}/?{_query}')
|
||||
if includes is not None:
|
||||
_query['inc'] = '+'.join(includes)
|
||||
|
||||
return _do_request(f'{_mb_host}/{entity_type}/?{urlencode(_query)}')
|
||||
|
||||
|
||||
def _browse(entity_type, params, includes=None, limit=25, offset=0):
|
||||
@@ -166,9 +169,6 @@ def get_artist_by_mbid(mbid, includes=None):
|
||||
:param list includes: List of include parameters
|
||||
:return: dictionary with the response
|
||||
"""
|
||||
if includes is None:
|
||||
includes = []
|
||||
|
||||
return _get('artist', mbid, includes)
|
||||
|
||||
|
||||
@@ -180,9 +180,6 @@ def get_release_group_by_mbid(mbid, includes=None):
|
||||
:param list includes: List of include parameters
|
||||
:return: dictionary with the response
|
||||
"""
|
||||
if includes is None:
|
||||
includes = []
|
||||
|
||||
return _get('release-group', mbid, includes)
|
||||
|
||||
|
||||
@@ -194,9 +191,6 @@ def get_release_by_mbid(mbid, includes=None):
|
||||
:param list includes: List of include parameters
|
||||
:return: dictionary with the response
|
||||
"""
|
||||
if includes is None:
|
||||
includes = []
|
||||
|
||||
return _get('release', mbid, includes)
|
||||
|
||||
|
||||
@@ -208,58 +202,60 @@ def get_recording_by_mbid(mbid, includes=None):
|
||||
:param list includes: List of include parameters
|
||||
:return: dictionary with the response
|
||||
"""
|
||||
if includes is None:
|
||||
includes = []
|
||||
|
||||
return _get('recording', mbid, includes)
|
||||
|
||||
|
||||
@cache
|
||||
def search_artist(query, limit=25, offset=0):
|
||||
def search_artist(query, includes=None, limit=25, offset=0):
|
||||
"""Search an artist by a query string
|
||||
|
||||
:param str query: Query string
|
||||
:param list includes: List of include parameters
|
||||
:param int limit: Limit of the search, defaults to 25 and has a max of 100
|
||||
:param int offset: Offset of the search for paging purposes
|
||||
:return: dictionary with the response
|
||||
"""
|
||||
return _search('artist', query, limit, offset)
|
||||
return _search('artist', query, includes, limit, offset)
|
||||
|
||||
|
||||
@cache
|
||||
def search_release(query, limit=25, offset=0):
|
||||
def search_release(query, includes=None, limit=25, offset=0):
|
||||
"""Search a release by a query string
|
||||
|
||||
:param str query: Query string
|
||||
:param list includes: List of include parameters
|
||||
:param int limit: Limit of the search, defaults to 25 and has a max of 100
|
||||
:param int offset: Offset of the search for paging purposes
|
||||
:return: dictionary with the response
|
||||
"""
|
||||
return _search('release', query, limit, offset)
|
||||
return _search('release', query, includes, limit, offset)
|
||||
|
||||
|
||||
@cache
|
||||
def search_release_group(query, limit=25, offset=0):
|
||||
def search_release_group(query, includes=None, limit=25, offset=0):
|
||||
"""Search a release group by a query string
|
||||
|
||||
|
||||
:param str query: Query string
|
||||
:param list includes: List of include parameters
|
||||
:param int limit: Limit of the search, defaults to 25 and has a max of 100
|
||||
:param int offset: Offset of the search for paging purposes
|
||||
:return: dictionary with the response
|
||||
"""
|
||||
return _search('release-group', query, limit, offset)
|
||||
|
||||
return _search('release-group', query, includes, limit, offset)
|
||||
|
||||
|
||||
@cache
|
||||
def search_recording(query, limit=25, offset=0):
|
||||
def search_recording(query, includes=None, limit=25, offset=0):
|
||||
"""Search a recording by a query string
|
||||
|
||||
:param str query: Query string
|
||||
:param list includes: List of include parameters
|
||||
:param int limit: Limit of the search, defaults to 25 and has a max of 100
|
||||
:param int offset: Offset of the search for paging purposes
|
||||
:return: dictionary with the response
|
||||
"""
|
||||
return _search('recording', query, limit, offset)
|
||||
return _search('recording', query, includes,limit, offset)
|
||||
|
||||
|
||||
@cache
|
||||
@@ -272,9 +268,6 @@ def browse_artists(params, includes=None, limit=25, offset=0):
|
||||
:param int offset: Offset of the search for paging purposes
|
||||
:return: dictionary with the response
|
||||
"""
|
||||
if includes is None:
|
||||
includes = []
|
||||
|
||||
return _browse('artist', params, includes, limit, offset)
|
||||
|
||||
|
||||
@@ -288,9 +281,6 @@ def browse_recordings(params, includes=None, limit=25, offset=0):
|
||||
:param int offset: Offset of the search for paging purposes
|
||||
:return: dictionary with the response
|
||||
"""
|
||||
if includes is None:
|
||||
includes = []
|
||||
|
||||
return _browse('recording', params, includes, limit, offset)
|
||||
|
||||
|
||||
@@ -304,9 +294,6 @@ def browse_releases(params, includes=None, limit=25, offset=0):
|
||||
:param int offset: Offset of the search for paging purposes
|
||||
:return: dictionary with the response
|
||||
"""
|
||||
if includes is None:
|
||||
includes = []
|
||||
|
||||
return _browse('release', params, includes, limit, offset)
|
||||
|
||||
|
||||
@@ -320,9 +307,6 @@ def browse_release_groups(params, includes=None, limit=25, offset=0):
|
||||
:param int offset: Offset of the search for paging purposes
|
||||
:return: dictionary with the response
|
||||
"""
|
||||
if includes is None:
|
||||
includes = []
|
||||
|
||||
return _browse('release-group', params, includes, limit, offset)
|
||||
|
||||
|
||||
@@ -346,4 +330,3 @@ def get_release_group_cover_art(mbid):
|
||||
:return: dictionary with the response
|
||||
"""
|
||||
return _ca('release-group', mbid)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user