Agregada integracion a cache de recordings
Fue un leseo la parte de recordings_of_release, pero ya esta esa parte Me faltan un par de recordings no mas :3
This commit is contained in:
@@ -62,6 +62,37 @@ def load_release_group_cover_art(release_group):
|
||||
_log.info('Cover art de release group %s almacenado en cache', mbid)
|
||||
|
||||
|
||||
@django_rq.job
|
||||
def load_entities_of_recording(recording):
|
||||
"""Carga en cache una recording y sus releases
|
||||
|
||||
Este difiere del resto e intenta obtener su padre, release, porque cargar recording como tal
|
||||
no da tanto valor como hacer lo contrario, se aprovecha mejor las requests usadas
|
||||
"""
|
||||
mbid = recording
|
||||
if isinstance(recording, dict):
|
||||
mbid = recording.get('id')
|
||||
|
||||
with get_redis_connection() as redis:
|
||||
if f'recording:{mbid}' not in redis:
|
||||
# La única forma de agregar en cache una recording es a través de su release
|
||||
# por lo que si ya esta guardada, su release lo estará
|
||||
return
|
||||
|
||||
offset = 0
|
||||
while True:
|
||||
releases = mb.browse_releases({'recording': mbid},
|
||||
includes=['recordings', 'artists'],
|
||||
limit=100, offset=offset)
|
||||
|
||||
for release in releases:
|
||||
load_entities_of_release.delay(release.get('id'))
|
||||
|
||||
offset += 100
|
||||
if offset > releases.get('release-count'):
|
||||
break
|
||||
|
||||
|
||||
@django_rq.job
|
||||
def load_entities_of_release(release):
|
||||
"""Carga en cache una release y sus entidades relacionadas"""
|
||||
@@ -94,6 +125,7 @@ def load_entities_of_release(release):
|
||||
# o menos me lo voy a saltar, lo único que interesa de la track es su orden dentro de su
|
||||
# media
|
||||
medias = release.get('media', [])
|
||||
redis.set(f'release:{mbid}:media:count', len(medias))
|
||||
for raw_media in medias:
|
||||
media = {
|
||||
'format': raw_media.get('format'),
|
||||
@@ -102,11 +134,12 @@ def load_entities_of_release(release):
|
||||
}
|
||||
redis.zadd(f'release:{mbid}:media', {json.dumps(media): media['position']})
|
||||
for track in raw_media.get('tracks', []):
|
||||
recording_key = f'release:{mbid}:{media.get("position")}:recordings'
|
||||
recording_key = f'release:{mbid}:media:{media.get("position")}:recordings'
|
||||
recording = track.get('recording')
|
||||
redis.zadd(recording_key, {recording.get('id'): track.get("position")})
|
||||
redis.set(f'recording:{mbid}', json.dumps(recording))
|
||||
redis.set(f'recording:{mbid}:release', mbid)
|
||||
recording_id = recording.get('id')
|
||||
redis.zadd(recording_key, {recording_id: track.get("position")})
|
||||
redis.set(f'recording:{recording_id}', json.dumps(recording))
|
||||
redis.set(f'recording:{recording_id}:release', mbid)
|
||||
|
||||
|
||||
@django_rq.job
|
||||
|
||||
Reference in New Issue
Block a user