Commit inicial

Habia trabajado un buen poco pero como vi que tenia que separar los
repositorios perdi bastante la historia :c
This commit is contained in:
Daniel Cortes
2020-05-22 00:05:27 -04:00
commit 3568abfbc7
44 changed files with 1841 additions and 0 deletions

127
fetcher/views.py Normal file
View File

@@ -0,0 +1,127 @@
from rest_framework.decorators import api_view
from rest_framework.response import Response
from . import musicbrainz as mb
def _get_by_mbid(request, entity_type, mbid):
includes = request.GET.get('inc', '').split('+')
if entity_type == 'artist':
response = mb.get_artist_by_mbid(mbid, includes)
elif entity_type == 'release-group':
response = mb.get_release_group_by_mbid(mbid, includes)
elif entity_type == 'release':
response = mb.get_release_by_mbid(mbid, includes)
elif entity_type == 'recording':
response = mb.get_recording_by_mbid(mbid, includes)
else:
raise ValueError('Entity Type isn\'t valid')
if 'status' in response:
return Response(response, status=response['status'])
else:
return Response(response)
def _search(request, entity_type):
query = request.GET.get('query', '')
limit = request.GET.get('limit', 25)
offset = request.GET.get('offset', 0)
if entity_type == 'artist':
response = mb.search_artist(query, limit, offset)
elif entity_type == 'release-group':
response = mb.search_release_group(query, limit, offset)
elif entity_type == 'release':
response = mb.search_release(query, limit, offset)
elif entity_type == 'recording':
response = mb.search_recording(query, limit, offset)
else:
raise ValueError('Entity Type isn\'t valid')
return Response(response)
def _browse(request, entity_type):
includes = request.GET.get('inc', '').split('+')
limit = request.GET.get('limit', 25)
offset = request.GET.get('offset', 0)
params = request.GET.copy().dict()
if 'inc' in params:
del params['inc']
if 'limit' in params:
del params['limit']
if 'offset' in params:
del params['offset']
if entity_type == 'artist':
response = mb.browse_artists(params, includes, limit, offset)
elif entity_type == 'release-group':
response = mb.browse_release_groups(params, includes, limit, offset)
elif entity_type == 'release':
response = mb.browse_releases(params, includes, limit, offset)
elif entity_type == 'recording':
response = mb.browse_recordings(params, includes, limit, offset)
else:
raise ValueError('Entity Type isn\'t valid')
return Response(response)
@api_view(['GET'])
def get_artist_by_mbid(request, mbid): return _get_by_mbid(request, 'artist', mbid)
@api_view(['GET'])
def get_release_group_by_mbid(request, mbid): return _get_by_mbid(request, 'release-group', mbid)
@api_view(['GET'])
def get_release_by_mbid(request, mbid): return _get_by_mbid(request, 'release', mbid)
@api_view(['GET'])
def get_recording_by_mbid(request, mbid): return _get_by_mbid(request, 'recording', mbid)
@api_view(['GET'])
def search_artist(request): return _search(request, 'artist')
@api_view(['GET'])
def search_release_group(request): return _search(request, 'release-group')
@api_view(['GET'])
def search_release(request): return _search(request, 'release')
@api_view(['GET'])
def search_recording(request): return _search(request, 'recording')
@api_view(['GET'])
def browse_artists(request): return _browse(request, 'artist')
@api_view(['GET'])
def browse_release_groups(request): return _browse(request, 'release-group')
@api_view(['GET'])
def browse_releases(request): return _browse(request, 'release')
@api_view(['GET'])
def browse_recordings(request): return _browse(request, 'recording')
@api_view(['GET'])
def get_release_cover_art(request, mbid, size=None): return Response(mb.get_release_cover_art(mbid, size))
@api_view(['GET'])
def get_release_group_cover_art(request, mbid, size=None):
return Response(mb.get_release_group_cover_art(mbid, size))