From 4df39b180f23254967133a5fb2c1d41b459a632d Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Fri, 7 Jun 2024 16:09:05 +0500 Subject: [PATCH] =?UTF-8?q?=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BB=20=D1=84?= =?UTF-8?q?=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8E=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=83?= =?UTF-8?q?=D0=BD=D0=B8=D0=BA=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?id=20=D1=82=D1=80=D0=B5=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/api/views.py | 2 +- server/proj/audio/models.py | 2 ++ server/proj/audio/views.py | 50 ++++++++++++++++++------------------- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/server/proj/api/views.py b/server/proj/api/views.py index 13b5c77..a073e24 100644 --- a/server/proj/api/views.py +++ b/server/proj/api/views.py @@ -8,7 +8,7 @@ from rest_framework.decorators import action from rest_framework.permissions import AllowAny class FetchAndServeFile(ViewSet): - + #http://82.97.242.49:10084/api/station/it-radio/file/5196269acd9d54e86297557a6d9a7aab/ def list(self, request): file_url = f"http://82.97.242.49:10084/api/station/it-radio/file/fc6377b2dae75d29358783bc/play" api_key = "49226d3488aac3f5:18d88659c6c1c5e131a0ce0a94d55235" diff --git a/server/proj/audio/models.py b/server/proj/audio/models.py index 4d1f89a..f4b62f0 100644 --- a/server/proj/audio/models.py +++ b/server/proj/audio/models.py @@ -3,6 +3,7 @@ from account.models import MyUser from django.template.defaultfilters import slugify class Song(models.Model): + #unique_id = models.CharField('ID трека для плеера', max_length=255) azura_id = models.CharField('ID трека с Азуры', max_length=255) title = models.CharField('Название трека', max_length=255) artist = models.CharField('Исполнитель', max_length=255) @@ -11,6 +12,7 @@ class Song(models.Model): art = models.CharField('Изображение трека', blank=True, null=True, max_length=255) slug = models.SlugField('Слаг трека', blank=True, null=True) + def save(self, *args, **kwargs): if not self.id: self.slug = slugify(self.azura_id) diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index dc8ad06..59e175a 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -4,6 +4,7 @@ from rest_framework.response import Response from rest_framework.decorators import action from rest_framework import status from django.shortcuts import get_object_or_404 +import requests from .schemas import SongSchema, DeleteSongSchema from .models import Song, FavoriteSong @@ -17,36 +18,33 @@ class SongViewSet(ViewSet): @action(detail=False, methods=['post'], schema=SongSchema()) def create_song(self, request): - - """ song = Song.objects.filter( - azura_id = request.data['azura_id'], - title = request.data['title'], - artist = request.data['artist'], - album = request.data['album'], - genre = request.data['genre'], - art = request.data['art'] - ) - + song = get_object_or_404(Song, azura_id = request.data['azura_id']) if song.exists(): data = { - "song": serializer.data['id'], + "song": song.id, "user": request.user.pk - } """ - - - serializer = SongSerializer(data=request.data) - if serializer.is_valid(): - serializer.save() - data = { - "song": serializer.data['id'], - "user": request.user.pk - } - serializer_1 = FavoriteSongSerializer(data=data) - if serializer_1.is_valid(): - serializer_1.save() - return Response(serializer_1.data, status=status.HTTP_201_CREATED) + } + serializer_1 = FavoriteSongSerializer(data=data) + if serializer_1.is_valid(): + serializer_1.save() + return Response(serializer_1.data, status=status.HTTP_201_CREATED) + else: + return Response(serializer_1.errors, status=status.HTTP_400_BAD_REQUEST) else: - return Response(serializer_1.errors, status=status.HTTP_400_BAD_REQUEST) + 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) + response.raise_for_status() + serializer = SongSerializer(data=request.data) + + if serializer.is_valid(): + serializer.save() + return Response(f'{response}', status=status.HTTP_201_CREATED) + else: + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) @action(detail=False, methods=['post'], schema=DeleteSongSchema())