ITRadio/server/proj/audio/views.py

86 lines
3.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from django.shortcuts import render
from rest_framework.viewsets import ViewSet
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
from .serializers import SongSerializer, FavoriteSongSerializer
class SongViewSet(ViewSet):
def list(self, request):
queryset = Song.objects.all()
serializer = SongSerializer(queryset, many=True)
return Response(serializer.data)
def retrieve(self, request, pk=None):
if request.user:
return Response(f"{request.user.pk}")
return Response('Не авторизован')
user_pk = request.user.pk
song_obj = get_object_or_404(Song, azura_id=pk).pk
queryset = FavoriteSong.objects.filter(user=user_pk, song=song_obj)
return Response(f"{queryset}")
""" if queryset.exists():
serializer = FavoriteSongSerializer(queryset=queryset)
resp = serializer.data
resp.update(is_favorite=True)
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response('Трека нет... Стёпа извини...', status=status.HTTP_400_BAD_REQUEST) """
@action(detail=False, methods=['post'], schema=SongSchema())
def create_song(self, request):
song = Song.objects.filter(azura_id = request.data['azura_id'])
if song:
data = {
"song": song[0].id,
"user": request.user.pk
}
serializer_1 = FavoriteSongSerializer(data=data)
if serializer_1.is_valid():
serializer_1.save()
resp = serializer_1.data
resp.update(is_favorite=True)
return Response(resp, status=status.HTTP_201_CREATED)
else:
return Response(serializer_1.errors, status=status.HTTP_400_BAD_REQUEST)
else:
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)
serializer = SongSerializer(data=data)
if serializer.is_valid():
serializer.save()
data = {
"song": song[0].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)
else:
return Response(serializer_1.errors, status=status.HTTP_400_BAD_REQUEST)
@action(detail=False, methods=['post'], schema=DeleteSongSchema())
def delete_song(self, request):
song_id = request.data['song_id']
item = get_object_or_404(FavoriteSong, pk=song_id)
item.delete()
return Response(status=status.HTTP_202_ACCEPTED)