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())