Newer
Older
Eliot Berriot
committed
from rest_framework import viewsets
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.decorators import list_route
Eliot Berriot
committed
import musicbrainzngs
Eliot Berriot
committed
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
from funkwhale_api.common.permissions import ConditionalAuthentication
from .client import api
class ReleaseDetail(APIView):
permission_classes = [ConditionalAuthentication]
def get(self, request, *args, **kwargs):
result = api.releases.get(
id=kwargs['uuid'], includes=['artists', 'recordings'])
return Response(result)
class ArtistDetail(APIView):
permission_classes = [ConditionalAuthentication]
def get(self, request, *args, **kwargs):
result = api.artists.get(
id=kwargs['uuid'],
includes=['release-groups'])
# import json; print(json.dumps(result, indent=4))
return Response(result)
class ReleaseGroupBrowse(APIView):
permission_classes = [ConditionalAuthentication]
def get(self, request, *args, **kwargs):
result = api.release_groups.browse(
artist=kwargs['artist_uuid'])
return Response(result)
class ReleaseBrowse(APIView):
permission_classes = [ConditionalAuthentication]
def get(self, request, *args, **kwargs):
result = api.releases.browse(
release_group=kwargs['release_group_uuid'],
Eliot Berriot
committed
includes=['recordings', 'artist-credits'])
Eliot Berriot
committed
return Response(result)
class SearchViewSet(viewsets.ViewSet):
permission_classes = [ConditionalAuthentication]
@list_route(methods=['get'])
def recordings(self, request, *args, **kwargs):
query = request.GET['query']
Eliot Berriot
committed
results = api.recordings.search(query)
Eliot Berriot
committed
return Response(results)
@list_route(methods=['get'])
def releases(self, request, *args, **kwargs):
query = request.GET['query']
Eliot Berriot
committed
results = api.releases.search(query)
Eliot Berriot
committed
return Response(results)
@list_route(methods=['get'])
def artists(self, request, *args, **kwargs):
query = request.GET['query']
results = api.artists.search(query)
Eliot Berriot
committed
# results = musicbrainzngs.search_artists(query)
Eliot Berriot
committed
return Response(results)