Ultimas modificaciones a la api, creo

This commit is contained in:
Daniel Cortes
2020-05-23 00:21:43 -04:00
parent eb4351c9de
commit f7008c3c27
4 changed files with 172 additions and 51 deletions

View File

@@ -114,6 +114,17 @@ def get_discs_of_artist(mbid, limit, page):
} }
def get_artist_of_disc(mbid, limit, page):
mb_artists = mb.browse_artists(params={'disc': mbid}, limit=limit, offset=limit * (page - 1))
if 'error' in mb_artists:
return mb_artists
return {
'paginate': paginate(mb_artists.get('artist_count', 0), limit, page),
'artists': [map_artist(mb_artists) for mb_artists in mb_artists['artists']]
}
def get_release(mbid): def get_release(mbid):
mb_release = mb.get_release_by_mbid(mbid) mb_release = mb.get_release_by_mbid(mbid)
if 'error' in mb_release: if 'error' in mb_release:
@@ -124,6 +135,8 @@ def get_release(mbid):
def get_releases_of_disc(mbid, limit, page): def get_releases_of_disc(mbid, limit, page):
mb_releases = mb.browse_releases(params={'release-group': mbid}, limit=limit, offset=limit * (page - 1)) mb_releases = mb.browse_releases(params={'release-group': mbid}, limit=limit, offset=limit * (page - 1))
if 'error' in mb_releases:
return mb_releases
return { return {
'paginate': paginate(mb_releases.get('release_count', 0), limit, page), 'paginate': paginate(mb_releases.get('release_count', 0), limit, page),
@@ -131,6 +144,17 @@ def get_releases_of_disc(mbid, limit, page):
} }
def get_artist_of_release(mbid, limit, page):
mb_artists = mb.browse_artists(params={'release': mbid}, limit=limit, offset=limit * (page - 1))
if 'error' in mb_artists:
return mb_artists
return {
'paginate': paginate(mb_artists.get('artist_count', 0), limit, page),
'artists': [map_artist(mb_artists) for mb_artists in mb_artists['artists']]
}
def get_recording(mbid): def get_recording(mbid):
mb_recording = mb.get_recording_by_mbid(mbid) mb_recording = mb.get_recording_by_mbid(mbid)
if 'error' in mb_recording: if 'error' in mb_recording:
@@ -150,6 +174,28 @@ def get_recordings_of_release(mbid, limit, page):
} }
def get_release_of_recording(mbid, limit, page):
mb_releases = mb.browse_releases(params={'recording': mbid}, limit=limit, offset=limit * (page - 1))
if 'error' in mb_releases:
return mb_releases
return {
'paginate': paginate(mb_releases.get('release_count', 0), limit, page),
'releases': [map_release(release) for release in mb_releases.get('releases')]
}
def get_artist_of_recording(mbid, limit, page):
mb_artists = mb.browse_artists(params={'recording': mbid}, limit=limit, offset=limit * (page - 1))
if 'error' in mb_artists:
return mb_artists
return {
'paginate': paginate(mb_artists.get('artist_count', 0), limit, page),
'artists': [map_recording(mb_recording) for mb_recording in mb_artists['artists']]
}
def get_cover_art_disc(mbid): def get_cover_art_disc(mbid):
mb_covers = mb.get_release_group_cover_art(mbid) mb_covers = mb.get_release_group_cover_art(mbid)
if 'error' in mb_covers: if 'error' in mb_covers:
@@ -172,6 +218,14 @@ def get_cover_art_release(mbid):
return map_coverart(find_best_cover(mb_covers)) return map_coverart(find_best_cover(mb_covers))
def get_cover_art_recording(mbid):
release = get_release_of_recording(mbid, limit=1, page=1)
if 'error' in release:
return None
return get_cover_art_release(release['releases'][0]['id'])
def search_artist(query, limit, page): def search_artist(query, limit, page):
mb_artists = mb.search_artist(query=query, limit=limit, offset=limit * (page - 1)) mb_artists = mb.search_artist(query=query, limit=limit, offset=limit * (page - 1))
@@ -197,3 +251,12 @@ def search_release(query, limit, page):
'paginate': paginate(mb_releases['count'], limit, page), 'paginate': paginate(mb_releases['count'], limit, page),
'releases': [map_release(r) for r in mb_releases['releases']] 'releases': [map_release(r) for r in mb_releases['releases']]
} }
def search_recording(query, limit, page):
mb_recording = mb.search_recording(query=query, limit=limit, offset=limit * (page - 1))
return {
'paginate': paginate(mb_recording['count'], limit, page),
'recordings': [map_recording(r) for r in mb_recording['recordings']]
}

View File

@@ -346,3 +346,4 @@ def get_release_group_cover_art(mbid):
:return: dictionary with the response :return: dictionary with the response
""" """
return _ca('release-group', mbid) return _ca('release-group', mbid)

View File

@@ -2,18 +2,25 @@ from django.urls import path
from . import views from . import views
urlpatterns = [ urlpatterns = [
path('artist/', views.search_artist),
path('artist/<mbid>/', views.get_artist), path('artist/<mbid>/', views.get_artist),
path('artist/<mbid>/discs/', views.get_discs_of_artist), path('artist/<mbid>/discs/', views.get_discs_of_artist),
path('artist/', views.search_artist),
path('disc/<mbid>/', views.get_disc),
path('disc/<mbid>/releases/', views.get_releases_of_disc),
path('disc/<mbid>/coverart/', views.get_release_group_cover_art),
path('disc/', views.search_disc), path('disc/', views.search_disc),
path('disc/<mbid>/', views.get_disc),
path('disc/<mbid>/artist/', views.get_artist_of_disc),
path('disc/<mbid>/releases/', views.get_releases_of_disc),
path('disc/<mbid>/coverart/', views.get_cover_art_of_disc),
path('release/<mbid>/', views.get_release),
path('release/<mbid>/recordings/', views.get_recordings_of_release),
path('release/<mbid>/coverart', views.get_release_group_cover_art),
path('release/', views.search_release), path('release/', views.search_release),
path('release/<mbid>/', views.get_release),
path('release/<mbid>/artist/', views.get_artist_of_release),
path('release/<mbid>/recordings/', views.get_recordings_of_release),
path('release/<mbid>/coverart/', views.get_cover_art_of_release),
path('recording/', views.search_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>/coverart/', views.get_cover_art_of_recording),
] ]

View File

@@ -5,6 +5,16 @@ from rest_framework.response import Response
from . import musicbrainz as mb, medium from . import musicbrainz as mb, medium
@api_view(['GET'])
def search_artist(request):
limit = int(request.GET.get('per_page', 10))
page = int(request.GET.get('page', 1))
query = request.GET.get('query')
if query:
return Response(medium.search_artist(query, limit, page))
@api_view(['GET']) @api_view(['GET'])
def get_artist(request, mbid): def get_artist(request, mbid):
return Response(medium.get_artist(mbid)) return Response(medium.get_artist(mbid))
@@ -15,6 +25,15 @@ def get_disc(request, mbid):
return Response(medium.get_disc(mbid)) return Response(medium.get_disc(mbid))
@api_view(['GET'])
def search_disc(request):
query = request.GET.get('query', '')
limit = int(request.GET.get('per_page', 10))
page = int(request.GET.get('page', 1))
return Response(medium.search_disc(query, limit, page))
@api_view(['GET']) @api_view(['GET'])
def get_discs_of_artist(request, mbid): def get_discs_of_artist(request, mbid):
limit = int(request.GET.get('per_page', 10)) limit = int(request.GET.get('per_page', 10))
@@ -23,50 +42,19 @@ def get_discs_of_artist(request, mbid):
return Response(medium.get_discs_of_artist(mbid, limit, page)) return Response(medium.get_discs_of_artist(mbid, limit, page))
@api_view(['GET'])
def get_artist_of_disc(request, mbid):
limit = int(request.GET.get('per_page', 10))
page = int(request.GET.get('page', 1))
return Response(medium.get_artist_of_disc(mbid, limit, page))
@api_view(['GET']) @api_view(['GET'])
def get_release(request, mbid): def get_release(request, mbid):
return Response(medium.get_release(mbid)) return Response(medium.get_release(mbid))
@api_view(['GET'])
def get_releases_of_disc(request, mbid):
limit = int(request.GET.get('per_page', 10))
page = int(request.GET.get('page', 1))
return Response(medium.get_releases_of_disc(mbid, limit, page))
@api_view(['GET'])
def get_recording(request, mbid):
return Response(medium.get_recording(mbid))
@api_view(['GET'])
def get_recordings_of_release(request, mbid):
limit = int(request.GET.get('per_page', 100))
page = int(request.GET.get('page', 1))
return Response(medium.get_recordings_of_release(mbid, limit, page))
@api_view(['GET'])
def search_artist(request):
query = request.GET.get('query', '')
limit = int(request.GET.get('per_page', 10))
page = int(request.GET.get('page', 1))
return Response(medium.search_artist(query, limit, page))
@api_view(['GET'])
def search_disc(request):
query = request.GET.get('query', '')
limit = int(request.GET.get('per_page', 10))
page = int(request.GET.get('page', 1))
return Response(medium.search_disc(query, limit, page))
@api_view(['GET']) @api_view(['GET'])
def search_release(request): def search_release(request):
query = request.GET.get('query', '') query = request.GET.get('query', '')
@@ -76,20 +64,82 @@ def search_release(request):
return Response(medium.search_release(query, limit, page)) return Response(medium.search_release(query, limit, page))
@api_view(['GET'])
def get_releases_of_disc(request, mbid):
limit = int(request.GET.get('per_page', 10))
page = int(request.GET.get('page', 1))
return Response(medium.get_releases_of_disc(mbid, limit, page))
@api_view(['GET'])
def get_artist_of_release(request, mbid):
limit = int(request.GET.get('per_page', 10))
page = int(request.GET.get('page', 1))
return Response(medium.get_artist_of_release(mbid, limit, page))
@api_view(['GET'])
def get_recording(request, mbid):
return Response(medium.get_recording(mbid))
@api_view(['GET']) @api_view(['GET'])
def search_recording(request): def search_recording(request):
query = request.GET.get('query', '') query = request.GET.get('query', '')
limit = int(request.GET.get('per_page', 10)) limit = int(request.GET.get('per_page', 10))
page = int(request.GET.get('page', 1)) page = int(request.GET.get('page', 1))
return Response(medium.search_release(query, limit, page)) return Response(medium.search_recording(query, limit, page))
@api_view(['GET']) @api_view(['GET'])
def get_release_cover_art(request, mbid, size=None): def get_recordings_of_release(request, mbid):
return Response(mb.get_release_cover_art(mbid, size)) limit = int(request.GET.get('per_page', 100))
page = int(request.GET.get('page', 1))
return Response(medium.get_recordings_of_release(mbid, limit, page))
@api_view(['GET']) @api_view(['GET'])
def get_release_group_cover_art(request, mbid, size=None): def get_release_of_recording(request, mbid):
return Response(mb.get_release_group_cover_art(mbid, size)) limit = int(request.GET.get('per_page', 100))
page = int(request.GET.get('page', 1))
return Response(medium.get_release_of_recording(mbid, limit, page))
@api_view(['GET'])
def get_artist_of_recording(request, mbid):
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'])
def get_cover_art_of_disc(request, mbid):
coverart = medium.get_cover_art_disc(mbid)
if coverart:
return Response(coverart)
else:
return Response(status=404)
@api_view(['GET'])
def get_cover_art_of_release(request, mbid):
coverart = medium.get_cover_art_release(mbid)
if coverart:
return Response(coverart)
else:
return Response(status=404)
@api_view(['GET'])
def get_cover_art_of_recording(request, mbid):
coverart = medium.get_cover_art_recording(mbid)
if coverart:
return Response(coverart)
else:
return Response(status=404)