Пример #1
0
def add_song(request):
	serializer = SongSerializer(data = request.data)	
	
	if serializer.is_valid():

		"""  Check if the song already exists  """
		jdict = json.loads(json.dumps(request.data))
		if len(Song.objects.all().filter(title__iexact = jdict['title']).filter(artist__iexact = jdict['artist']).filter(album__iexact = jdict['album'])) > 0:
			return Response(serializer.data, status = status.HTTP_200_OK)

		serializer.save()
		return Response(serializer.data, status = status.HTTP_201_CREATED)
	else:
		return Response(serializer.errors, status = status.HTTP_400_BAD_REQUEST)
Пример #2
0
def audio_create(request):
    file_type = request.data.get('audioFileType')
    meta = request.data.get('audioFileMetadata')

    if file_type and meta:
        if file_type in AUDIO_FILE_TYPE:
            try:
                serializer = ''
                if file_type == Song.TYPE:
                    serializer = SongSerializer(data=meta)
                elif file_type == Podcast.TYPE:
                    serializer = PodcastSerializer(data=meta)
                elif file_type == Audiobook.TYPE:
                    serializer = AudiobookSerializer(data=meta)
                if serializer.is_valid():
                    serializer.save()
                    return Response(serializer.data, status=status.HTTP_201_CREATED)
                return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
            except Exception as e:
                return Response({'error': str(e)}, status.HTTP_400_BAD_REQUEST)
        else:
            return Response({'error': ErrorDetail('audioFileType available choice are ' + str(AUDIO_FILE_TYPE),
                                                  code='required')},
                            status=status.HTTP_400_BAD_REQUEST)
    else:
        return Response({'error': ErrorDetail('audioFileType and audioFileMetadata', code='required')},
                        status=status.HTTP_400_BAD_REQUEST)
Пример #3
0
def audio_list(request, audioFileType):
    audioFileID = request.GET.get('audioFileID')
    if audioFileType in AUDIO_FILE_TYPE:
        serializer = None
        if audioFileType == Song.TYPE:
            if audioFileID:
                try:
                    songs = Song.objects.get(id=audioFileID)
                    serializer = SongSerializer(songs)
                except:
                    pass
            else:
                songs = Song.objects.all()
                serializer = SongSerializer(songs, many=True)
        elif audioFileType == Podcast.TYPE:
            if audioFileID:
                try:
                    podcasts = Podcast.objects.get(id=audioFileID)
                    serializer = PodcastSerializer(podcasts)
                except:
                    pass
            else:
                podcasts = Podcast.objects.all()
                serializer = PodcastSerializer(podcasts, many=True)
        elif audioFileType == Audiobook.TYPE:
            if audioFileID:
                try:
                    audios = Audiobook.objects.get(id=audioFileID)
                    serializer = AudiobookSerializer(audios)
                except:
                    pass
            else:
                audios = Audiobook.objects.all()
                serializer = AudiobookSerializer(audios, many=True)
        if serializer:
            return Response(serializer.data, status=status.HTTP_200_OK)
        else:
            return Response({'error': ErrorDetail('audioFileID {} is not exist.'.format(audioFileID),
                                                  code='required')},
                            status=status.HTTP_404_NOT_FOUND)
    else:
        return Response({'error': ErrorDetail('audioFileType available choice are ' + str(AUDIO_FILE_TYPE),
                                              code='required')},
                        status=status.HTTP_400_BAD_REQUEST)
Пример #4
0
def song(request, songid):
	try:
		song = Song.objects.get(id=songid)
	except Song.DoesNotExist:
		return Response(status=status.HTTP_404_NOT_FOUND)

	if request.method == 'GET':
		serializer = SongSerializer(song)
		return Response(serializer.data)

	elif request.method == 'PUT':
		serializer = SongSerializer(song, data=request.data)
		if serializer.is_valid():
			serializer.save()
			return Response(serializer.data)
		return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

	elif request.method == 'DELETE':
		song.delete()
		return Response(status=status.HTTP_204_NO_CONTENT)
Пример #5
0
    def post(self, request: Request, *args, **kwargs):
        panda = None
        serializer = SongSerializer(data=request.data)
        if serializer.is_valid():
            song = serializer.get_or_create(serializer.validated_data)

            title = song.title.replace(' ', '%20')
            song_url = 'https://some-random-api.ml/lyrics?title=' + title
            data = json.loads(requests.get(song_url).content)
            if (str(data['author']).lower() == str(song.author).lower()):
                song.lyrics = data['lyrics']
                panda = json.loads(
                    requests.get(
                        'https://some-random-api.ml/img/panda').content)
                song.image = panda['link']
            else:
                song = None
        else:
            song = None

        return render(request, "show_song.html", {'song': song})
Пример #6
0
 def list(self, request):
     queryset = Song.objects.all()
     http_methods = ['get']
     genre = self.request.query_params.get('genre', None)
     band = self.request.query_params.get('band', None)
     if genre is not None:
         queryset = queryset.filter(genre=genre)
         queryset = queryset.order_by('?')[:10]
     if band is not None:
         queryset = queryset.filter(band=band)
     serializer = SongSerializer(queryset,
                                 many=True,
                                 context={'request': request})
     return Response(serializer.data)
Пример #7
0
def audio_update(request, audioFileType, audioFileID):
    meta = request.data.get('audioFileMetadata')
    if meta:
        if audioFileType in AUDIO_FILE_TYPE:
            try:
                serializer = None
                audioFile_obj = None
                if audioFileType == Song.TYPE:
                    try:
                        audioFile_obj = Song.objects.get(id=audioFileID)
                        serializer = SongSerializer(audioFile_obj, data=meta)
                    except:
                        pass
                if audioFileType == Podcast.TYPE:
                    try:
                        audioFile_obj = Podcast.objects.get(id=audioFileID)
                        serializer = PodcastSerializer(audioFile_obj, data=meta)
                    except:
                        pass
                if audioFileType == Audiobook.TYPE:
                    try:
                        audioFile_obj = Audiobook.objects.get(id=audioFileID)
                        serializer = AudiobookSerializer(audioFile_obj, data=meta)
                    except:
                        pass
                if audioFile_obj:
                    if serializer.is_valid():
                        serializer.save()
                        return Response(serializer.data, status=status.HTTP_200_OK)
                    else:
                        # print(serializer.errors)
                        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
                else:
                    return Response({'error': ErrorDetail('audioFileID {} is not exist.'.format(audioFileID),
                                                          code='required')},
                                    status=status.HTTP_404_NOT_FOUND)
            except Exception as e:
                return Response({'error': str(e)}, status.HTTP_400_BAD_REQUEST)
        else:
            return Response({'error': ErrorDetail('audioFileType available choice are ' + str(AUDIO_FILE_TYPE),
                                                  code='required')},
                            status=status.HTTP_400_BAD_REQUEST)
    else:
        return Response({'error': ErrorDetail('audioFileMetadata', code='required')},
                        status=status.HTTP_400_BAD_REQUEST)
Пример #8
0
    def setUp(self):
        serializer = SongSerializer(data={"name": "song", "duration": 600})
        if serializer.is_valid():
            serializer.save()

        serializer = PodcastSerializer(
            data={
                "name":
                "podcast",
                "duration":
                600,
                "host":
                "host 1",
                "participants":
                "person1, person2, person3, person4, person5, person6, person7"
            })
        if serializer.is_valid():
            serializer.save()

        serializer = AudiobookSerializer(
            data={
                "name": "audiobook",
                "author": "author 1",
                "narrator": "narrator 1",
                "duration": 600
            })
        if serializer.is_valid():
            serializer.save()