diff --git a/server/proj/audio/models.py b/server/proj/audio/models.py index 44aecc5..b7ca203 100644 --- a/server/proj/audio/models.py +++ b/server/proj/audio/models.py @@ -23,6 +23,7 @@ class Song(models.Model): class Meta: verbose_name = 'Треки' + unique_together = ('azura_id', ) verbose_name_plural = 'Треки' diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index 94e726b..d20df9a 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -192,7 +192,7 @@ class SongViewSet(GenericViewSet): except ObjectDoesNotExist: return Response({"error": 'Объекта не существует'}, status=status.HTTP_404_NOT_FOUND) - @action(detail=False, methods=['get']) + @action(detail=False, methods=['post'], schema=SongSchema()) def get_all_song(self, request): file_url = "http://82.97.242.49:10084/api/station/1/files" API_KEY = "49226d3488aac3f5:18d88659c6c1c5e131a0ce0a94d55235" @@ -200,8 +200,21 @@ class SongViewSet(GenericViewSet): "Authorization": f"Bearer {API_KEY}" } response = requests.get(file_url, headers=headers) + data = [] + for i in response.json(): + data.append({ + "azura_id": i.get('song_id', None), + "title": i.get('title', None), + "artist": i.get('artist', None), + "album": i.get('album', None), + "genre": i.get('genre', None), + "art": i.get('art', None) + }) + serializer = SongSerializer(data=data, many=True) + if serializer.is_valid(): + serializer.save() + return Response(serializer.data, status=status.HTTP_200_OK) - return Response(response.json(), status=status.HTTP_200_OK)