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:
127
fetcher/views.py
Normal file
127
fetcher/views.py
Normal 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))
|
||||
Reference in New Issue
Block a user