From 5b7f1caedbfc8e3607b5ff274f09e320fbdd1449 Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Fri, 21 Jun 2024 10:40:05 +0500 Subject: [PATCH] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BF=D0=B5=D1=81=D0=BD=D0=B8=20=D0=B2=20=D0=BF=D0=BB?= =?UTF-8?q?=D0=B5=D0=B9=D0=BB=D0=B8=D1=81=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/schemas.py | 32 +++++++++++++++++++++++++++++++- server/proj/audio/views.py | 25 ++++++++++++++++--------- 2 files changed, 47 insertions(+), 10 deletions(-) diff --git a/server/proj/audio/schemas.py b/server/proj/audio/schemas.py index 607ef1e..6442c1e 100644 --- a/server/proj/audio/schemas.py +++ b/server/proj/audio/schemas.py @@ -73,6 +73,36 @@ class PlayListSchema(AutoSchema): name='azura_id', location='form', required=False, - schema=coreschema.String(description='ID трека с азуры') + schema=coreschema.String(description='ID трека с Азуры') + ), + coreapi.Field( + name='title', + location='form', + required=False, + schema=coreschema.String(description='Название трека') + ), + coreapi.Field( + name='artist', + location='form', + required=False, + schema=coreschema.String(description='Исполнитель') + ), + coreapi.Field( + name='album', + location='form', + required=False, + schema=coreschema.String(description='Альбом трека') + ), + coreapi.Field( + name='genre', + location='form', + required=False, + schema=coreschema.String(description='Жанр трека') + ), + coreapi.Field( + name='art', + location='form', + required=False, + schema=coreschema.String(description='Изображение трека') ), ] \ No newline at end of file diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index c17aaa5..8d04bd2 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -72,13 +72,23 @@ class PlayListViewSet(GenericViewSet): @action(detail=False, methods=['post'], schema=PlayListSchema()) def add_to_playlist(self, request): + song = None try: - song = list(Song.objects.filter(azura_id=request.data.get('azura_id')).values_list('pk', flat=True)) + song = Song.objects.get(azura_id=request.data.get('azura_id')).pk except ObjectDoesNotExist: - return Response( - {'detail': 'Песни не существует', 'error': {'Song': 'Песни не существует'}}, - status=status.HTTP_404_NOT_FOUND) - + file_url = f"http://82.97.242.49:10084/api/station/it-radio/file/{request.data['azura_id']}" + API_KEY = "49226d3488aac3f5:18d88659c6c1c5e131a0ce0a94d55235" + headers = { + "Authorization": f"Bearer {API_KEY}" + } + response = requests.get(file_url, headers=headers) + data = request.data + file_play = f"http://82.97.242.49:10084/api/station/it-radio/file/{response.json()['unique_id']}/play" + data.update(unique_id=file_play) + song_serializer = SongSerializer(data=data) + if song_serializer.is_valid(): + song_serializer.save() + song = song_serializer.data.get('id') try: instance = PlayList.objects.get(pk=request.data.get('playlist_id')) except ObjectDoesNotExist: @@ -86,7 +96,7 @@ class PlayListViewSet(GenericViewSet): {'detail': 'Плейлиста не существует', 'error': {'PlayList': 'Плейлиста не существует'}}, status=status.HTTP_404_NOT_FOUND) - songs = list(instance.song.all().values_list('pk', flat=True))+song + songs = list(instance.song.all().values_list('pk', flat=True)) + [song] data = { 'playlist_id': request.data.get('playlist_id'), 'song': songs @@ -204,9 +214,6 @@ class SongViewSet(GenericViewSet): for i in response.json(): i['azura_id'] = i.pop('song_id') data.append(i) - - - return Response(data, status=status.HTTP_200_OK)