Artists of recordings
This commit is contained in:
@@ -28,7 +28,7 @@ import json
|
|||||||
import django_rq
|
import django_rq
|
||||||
|
|
||||||
from fetcher import musicbrainz as mb
|
from fetcher import musicbrainz as mb
|
||||||
from utils import get_redis_connection, parse_date, pretty_print_json
|
from utils import get_redis_connection, parse_date
|
||||||
|
|
||||||
_log = logging.getLogger('fetcher_jobs')
|
_log = logging.getLogger('fetcher_jobs')
|
||||||
_log.addHandler(logging.NullHandler())
|
_log.addHandler(logging.NullHandler())
|
||||||
@@ -84,7 +84,6 @@ def load_entities_of_recording(recording):
|
|||||||
releases = mb.browse_releases({'recording': mbid},
|
releases = mb.browse_releases({'recording': mbid},
|
||||||
includes=['recordings', 'artist-credits'],
|
includes=['recordings', 'artist-credits'],
|
||||||
limit=100, offset=offset)
|
limit=100, offset=offset)
|
||||||
pretty_print_json(releases)
|
|
||||||
|
|
||||||
# lo unico que sirve hacer aqui es almacenar en cuantas releases se encuentra la
|
# lo unico que sirve hacer aqui es almacenar en cuantas releases se encuentra la
|
||||||
# grabacion
|
# grabacion
|
||||||
@@ -177,7 +176,7 @@ def load_entities_of_release_group(release_group):
|
|||||||
# Cargo todas las releases posibles la primera vez, si no lo hiciera y necesitara pedir
|
# Cargo todas las releases posibles la primera vez, si no lo hiciera y necesitara pedir
|
||||||
# mas datos, usuaria una request en vano
|
# mas datos, usuaria una request en vano
|
||||||
releases = mb.browse_releases({'release-group': mbid},
|
releases = mb.browse_releases({'release-group': mbid},
|
||||||
includes=['artist-credits'],
|
includes=['recordings', 'artist-credits'],
|
||||||
limit=100, offset=offset)
|
limit=100, offset=offset)
|
||||||
count = releases.get('release_count')
|
count = releases.get('release_count')
|
||||||
if f'release_group:{mbid}:releases' in redis:
|
if f'release_group:{mbid}:releases' in redis:
|
||||||
|
|||||||
@@ -534,17 +534,36 @@ def get_release_of_recording(mbid, limit, page):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def get_artist_of_recording(mbid, limit, page):
|
def get_artist_of_recording(mbid):
|
||||||
"""Obtiene el artista de una grabacion"""
|
"""Obtiene el artista de una grabacion"""
|
||||||
mb_artists = mb.browse_artists(params={'recording': mbid}, limit=limit,
|
_log.info('Obteniendo el artista de la recording %s', mbid)
|
||||||
offset=limit * (page - 1))
|
|
||||||
|
|
||||||
if 'error' in mb_artists:
|
artist = None
|
||||||
return mb_artists
|
|
||||||
|
with get_redis_connection() as redis:
|
||||||
|
_log.debug('Intentando obtener el artista de la recording %s desde redis', mbid)
|
||||||
|
artist_key = f'recording:{mbid}:artist'
|
||||||
|
if artist_key in redis:
|
||||||
|
_log.debug('Se encontro el artista de la recording %s en redis', mbid)
|
||||||
|
artist = get_artist(redis.get(artist_key))
|
||||||
|
else:
|
||||||
|
_log.debug('El artista de la recording %s no estaba en redis', mbid)
|
||||||
|
|
||||||
|
if artist is None:
|
||||||
|
_log.debug('Obteniendo el artista de la recording %s desde musicbrainz', mbid)
|
||||||
|
mb_artist_browse = mb.browse_artists(params={'recording': mbid},
|
||||||
|
includes=['tags'],
|
||||||
|
limit=1, offset=0)
|
||||||
|
|
||||||
|
if 'error' in mb_artist_browse:
|
||||||
|
_log.debug('Erro al obtener artista %s', mb_artist_browse)
|
||||||
|
return mb_artist_browse
|
||||||
|
|
||||||
|
artist = mb_artist_browse.get('artists')[0]
|
||||||
|
jobs.load_artist_on_cache.delay(artist.get('id'))
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'paginate': paginate(mb_artists.get('artist_count', 0), limit, page),
|
'artist': artist
|
||||||
'artists': [map_artist(artist) for artist in mb_artists['artists']]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ urlpatterns = [
|
|||||||
|
|
||||||
path('recording/', views.search_recording),
|
path('recording/', views.search_recording),
|
||||||
path('recording/<mbid>/', views.get_recording),
|
path('recording/<mbid>/', views.get_recording),
|
||||||
path('recording/<mbid>/artist/', views.get_release_of_recording),
|
|
||||||
path('recording/<mbid>/release/', views.get_release_of_recording),
|
path('recording/<mbid>/release/', views.get_release_of_recording),
|
||||||
|
path('recording/<mbid>/artist/', views.get_artist_of_recording),
|
||||||
path('recording/<mbid>/coverart/', views.get_cover_art_of_recording),
|
path('recording/<mbid>/coverart/', views.get_cover_art_of_recording),
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -171,15 +171,8 @@ def get_release_of_recording(request, mbid):
|
|||||||
|
|
||||||
@api_view(['GET'])
|
@api_view(['GET'])
|
||||||
def get_artist_of_recording(request, mbid):
|
def get_artist_of_recording(request, mbid):
|
||||||
""" Obtiene el artista de una grabación dada su mbid
|
""" Obtiene el artista de una grabación dada su mbid"""
|
||||||
|
return Response(medium.get_artist_of_recording(mbid))
|
||||||
Como los datos son paginables la query puede contener per_page y page para definir cuantos
|
|
||||||
elementos mostrar por pagina y que pagina mostrar.
|
|
||||||
"""
|
|
||||||
limit = int(request.GET.get('per_page', 10))
|
|
||||||
page = int(request.GET.get('page', 1))
|
|
||||||
|
|
||||||
return Response(medium.get_artist_of_recording(mbid, limit, page))
|
|
||||||
|
|
||||||
|
|
||||||
@api_view(['GET'])
|
@api_view(['GET'])
|
||||||
|
|||||||
Reference in New Issue
Block a user