описал функцию для получения уникального id трека
This commit is contained in:
parent
4fff024546
commit
4df39b180f
|
|
@ -8,7 +8,7 @@ from rest_framework.decorators import action
|
||||||
from rest_framework.permissions import AllowAny
|
from rest_framework.permissions import AllowAny
|
||||||
|
|
||||||
class FetchAndServeFile(ViewSet):
|
class FetchAndServeFile(ViewSet):
|
||||||
|
#http://82.97.242.49:10084/api/station/it-radio/file/5196269acd9d54e86297557a6d9a7aab/
|
||||||
def list(self, request):
|
def list(self, request):
|
||||||
file_url = f"http://82.97.242.49:10084/api/station/it-radio/file/fc6377b2dae75d29358783bc/play"
|
file_url = f"http://82.97.242.49:10084/api/station/it-radio/file/fc6377b2dae75d29358783bc/play"
|
||||||
api_key = "49226d3488aac3f5:18d88659c6c1c5e131a0ce0a94d55235"
|
api_key = "49226d3488aac3f5:18d88659c6c1c5e131a0ce0a94d55235"
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ from account.models import MyUser
|
||||||
from django.template.defaultfilters import slugify
|
from django.template.defaultfilters import slugify
|
||||||
|
|
||||||
class Song(models.Model):
|
class Song(models.Model):
|
||||||
|
#unique_id = models.CharField('ID трека для плеера', max_length=255)
|
||||||
azura_id = models.CharField('ID трека с Азуры', max_length=255)
|
azura_id = models.CharField('ID трека с Азуры', max_length=255)
|
||||||
title = models.CharField('Название трека', max_length=255)
|
title = models.CharField('Название трека', max_length=255)
|
||||||
artist = 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)
|
art = models.CharField('Изображение трека', blank=True, null=True, max_length=255)
|
||||||
slug = models.SlugField('Слаг трека', blank=True, null=True)
|
slug = models.SlugField('Слаг трека', blank=True, null=True)
|
||||||
|
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
if not self.id:
|
if not self.id:
|
||||||
self.slug = slugify(self.azura_id)
|
self.slug = slugify(self.azura_id)
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ from rest_framework.response import Response
|
||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
|
import requests
|
||||||
|
|
||||||
from .schemas import SongSchema, DeleteSongSchema
|
from .schemas import SongSchema, DeleteSongSchema
|
||||||
from .models import Song, FavoriteSong
|
from .models import Song, FavoriteSong
|
||||||
|
|
@ -17,36 +18,33 @@ class SongViewSet(ViewSet):
|
||||||
|
|
||||||
@action(detail=False, methods=['post'], schema=SongSchema())
|
@action(detail=False, methods=['post'], schema=SongSchema())
|
||||||
def create_song(self, request):
|
def create_song(self, request):
|
||||||
|
song = get_object_or_404(Song, azura_id = request.data['azura_id'])
|
||||||
""" 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']
|
|
||||||
)
|
|
||||||
|
|
||||||
if song.exists():
|
if song.exists():
|
||||||
data = {
|
data = {
|
||||||
"song": serializer.data['id'],
|
"song": song.id,
|
||||||
"user": request.user.pk
|
"user": request.user.pk
|
||||||
} """
|
}
|
||||||
|
serializer_1 = FavoriteSongSerializer(data=data)
|
||||||
|
if serializer_1.is_valid():
|
||||||
serializer = SongSerializer(data=request.data)
|
serializer_1.save()
|
||||||
if serializer.is_valid():
|
return Response(serializer_1.data, status=status.HTTP_201_CREATED)
|
||||||
serializer.save()
|
else:
|
||||||
data = {
|
return Response(serializer_1.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||||
"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)
|
|
||||||
else:
|
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())
|
@action(detail=False, methods=['post'], schema=DeleteSongSchema())
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue