get_artist_of_disc con cache

This commit is contained in:
Daniel Cortes
2020-06-09 04:49:39 -04:00
parent cabe607958
commit b44c18770e
3 changed files with 23 additions and 17 deletions

View File

@@ -187,33 +187,36 @@ def get_disc(mbid):
return disc
def get_discs_of_artist(mbid):
def get_discs_of_artist(mbid, limit, page):
"""Obtiene los discos de un artista desde musicbrainz incluyendo"""
offset = limit * (page - 1)
mb_discs = []
total = 0
with get_redis_connection() as redis:
if f'artist_{mbid}:release_group_count' in redis:
mb_discs_ids = redis.lrange(f'artist_{mbid}:release_groups', 0, -1)
mb_discs = [get_disc(mbid) for mbid in mb_discs_ids]
key_count = f'artist_{mbid}:release_group_count'
if key_count in redis:
key = f'artist_{mbid}:release_groups'
if int(redis.get(key_count)) == redis.llen(key):
mb_discs_ids = redis.lrange(key, offset, limit)
mb_discs = [get_disc(mbid) for mbid in mb_discs_ids]
total = redis.llen(key)
if len(mb_discs) == 0:
jobs.load_artist_on_cache.delay(mbid)
offset = 0
while True:
mb_discs_browse = mb.browse_release_groups(params={'artist': mbid},
limit=100, offset=offset)
if 'error' in mb_discs_browse:
return mb_discs_browse
mb_discs_browse = mb.browse_release_groups(params={'artist': mbid},
limit=limit, offset=offset)
if 'error' in mb_discs_browse:
return mb_discs_browse
mb_discs.extend(mb_discs_browse.get('release_groups'))
offset += 100
if offset > mb_discs_browse.get('release_group_count'):
break
mb_discs = mb_discs_browse.get('release_groups')
total = mb_discs_browse.get('release_group_count')
return {
'paginate': paginate(total, limit, page),
'discs': [map_disc(disc) for disc in mb_discs]
}