diff --git a/.gitignore b/.gitignore index 8111fce..de137f8 100644 --- a/.gitignore +++ b/.gitignore @@ -18,4 +18,6 @@ server/proj/static/rest_framework __pycache__ media/ env/ +__init__.py +.env db.sqlite3 diff --git a/client/.env.production b/client/.env.production index 497c183..4d0644a 100644 --- a/client/.env.production +++ b/client/.env.production @@ -8,7 +8,7 @@ ROBOTS_ALLOW= ROBOTS_DISALLOW=["/"] SERVICE_SELF_URL=//itradio.team SERVICE_URL=//itradio.team -SERVICE_URL_AUDIO=//82.97.242.49:10443 +SERVICE_URL_AUDIO=//azuracast.itradio.team SERVICE_PROTOCOL=https SERVICE_PORT=8000 SERVICE_API=/api diff --git a/server/proj/api/admin.py b/server/proj/api/admin.py index 766be41..e69de29 100644 --- a/server/proj/api/admin.py +++ b/server/proj/api/admin.py @@ -1,5 +0,0 @@ -# from django.contrib import admin -# from .models import NowPlayingSong - -# # Register your models here. -# admin.site.register(NowPlayingSong) \ No newline at end of file diff --git a/server/proj/api/views.py b/server/proj/api/views.py index 47d69fc..243726a 100644 --- a/server/proj/api/views.py +++ b/server/proj/api/views.py @@ -6,44 +6,4 @@ from rest_framework.response import Response from rest_framework import status from rest_framework.decorators import action from rest_framework.permissions import AllowAny - -class FetchAndServeFile(ViewSet): - def list(self, request): - file_url = f"http://82.97.242.49:10084/api/station/it-radio/file/fc6377b2dae75d29358783bc" - api_key = "49226d3488aac3f5:18d88659c6c1c5e131a0ce0a94d55235" - - headers = { - "Authorization": f"Bearer {api_key}" - } - - try: - response = requests.get(file_url, headers=headers) - - response.raise_for_status() - - file_response = HttpResponse(response.content, content_type='audio/mpeg') - file_response['Content-Disposition'] = 'attachment; filename="output.mp3"' - return file_response - - except requests.RequestException as e: - return Response({'error': str(e)}, status=status.HTTP_400_BAD_REQUEST) - - def retrieve(self, request, pk=None): - file_url = f"http://82.97.242.49:10084/api/station/it-radio/file/{pk}/play" - api_key = "49226d3488aac3f5:18d88659c6c1c5e131a0ce0a94d55235" - - headers = { - "Authorization": f"Bearer {api_key}" - } - - try: - response = requests.get(file_url, headers=headers) - response.raise_for_status() - - # Create a response with the appropriate content type and headers - file_response = HttpResponse(response.content, content_type='audio/mpeg') - file_response['Content-Disposition'] = 'attachment; filename="output.mp3"' - return file_response - - except requests.RequestException as e: - return Response({'error': str(e)}, status=status.HTTP_400_BAD_REQUEST) \ No newline at end of file +from conf.settings.base import AZURACAST_API_KEY, AZURACAST_URL diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index 56e2d12..2379536 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -12,6 +12,7 @@ from django.http import HttpResponse from .schemas import SongSchema, DeleteSongSchema, PlayListSchema from .models import Song, FavoriteSong, PlayList from .serializers import SongSerializer, FavoriteSongSerializer, PlayListSerializer +from conf.settings.base import AZURACAST_URL, AZURACAST_API_KEY class PlayListViewSet(GenericViewSet): queryset = PlayList @@ -102,14 +103,14 @@ class PlayListViewSet(GenericViewSet): try: song = Song.objects.get(azura_id=request.data.get('azura_id')).pk except ObjectDoesNotExist: - file_url = f"http://82.97.242.49:10084/api/station/it-radio/file/{request.data['azura_id']}" - API_KEY = "49226d3488aac3f5:18d88659c6c1c5e131a0ce0a94d55235" + file_url = f"{AZURACAST_URL}api/station/it-radio/file/{request.data['azura_id']}" + API_KEY = AZURACAST_API_KEY 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" + file_play = f"{AZURACAST_URL}api/station/it-radio/file/{response.json()['unique_id']}/play" data.update(unique_id=file_play) song_serializer = SongSerializer(data=data) if song_serializer.is_valid(): @@ -168,7 +169,7 @@ class SongViewSet(GenericViewSet): try: song_obj = Song.objects.get(azura_id=azura_id) file_url = song_obj.unique_id - API_KEY = "49226d3488aac3f5:18d88659c6c1c5e131a0ce0a94d55235" + API_KEY = AZURACAST_API_KEY headers = { "Authorization": f"Bearer {API_KEY}" } @@ -195,14 +196,14 @@ class SongViewSet(GenericViewSet): "user": request.user.pk } except ObjectDoesNotExist: - file_url = f"http://82.97.242.49:10084/api/station/it-radio/file/{request.data['azura_id']}" - API_KEY = "49226d3488aac3f5:18d88659c6c1c5e131a0ce0a94d55235" + file_url = f"{AZURACAST_URL}api/station/it-radio/file/{request.data['azura_id']}" + API_KEY = AZURACAST_API_KEY 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" + file_play = f"{AZURACAST_URL}/api/station/it-radio/file/{response.json()['unique_id']}/play" data.update(unique_id=file_play) serializer = SongSerializer(data=data) if serializer.is_valid(): @@ -230,8 +231,8 @@ class SongViewSet(GenericViewSet): @action(detail=False, methods=['get']) def get_all_song(self, request): - file_url = "http://82.97.242.49:10084/api/station/1/files" - API_KEY = "49226d3488aac3f5:18d88659c6c1c5e131a0ce0a94d55235" + file_url = F"{AZURACAST_URL}api/station/1/files" + API_KEY = AZURACAST_API_KEY headers = { "Authorization": f"Bearer {API_KEY}" } diff --git a/server/proj/conf/__pycache__/urls.cpython-310.pyc b/server/proj/conf/__pycache__/urls.cpython-310.pyc index 7d8c935..f8dc8e0 100644 Binary files a/server/proj/conf/__pycache__/urls.cpython-310.pyc and b/server/proj/conf/__pycache__/urls.cpython-310.pyc differ diff --git a/server/proj/conf/settings/__pycache__/base.cpython-310.pyc b/server/proj/conf/settings/__pycache__/base.cpython-310.pyc index 7434b68..634a2e4 100644 Binary files a/server/proj/conf/settings/__pycache__/base.cpython-310.pyc and b/server/proj/conf/settings/__pycache__/base.cpython-310.pyc differ diff --git a/server/proj/conf/settings/base.py b/server/proj/conf/settings/base.py index 4b7f9be..bf95504 100644 --- a/server/proj/conf/settings/base.py +++ b/server/proj/conf/settings/base.py @@ -1,5 +1,6 @@ from pathlib import Path import os +from decouple import config # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent @@ -15,7 +16,7 @@ MEDIA_URL = 'media/' STATIC_ROOT = PROJECT_DIR / 'static' STATIC_URL = 'static/' # SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'django-insecure-z242=*-knp4h=0l1*o-nyid^y0bwt4bvg3tf*wvr(qszj&!8$c' +SECRET_KEY = config('SECRET_KEY') # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True @@ -160,4 +161,9 @@ CORS_ALLOW_CREDENTIALS = True CORS_ALLOWED_ORIGINS = [ 'http://localhost:5173', ] -MIN_LEN_PASSWORD = 8 \ No newline at end of file +MIN_LEN_PASSWORD = 8 + +###AZURACAST CONFIG### +AZURACAST_URL = 'https://azuracast.itradio.team/' +AZURACAST_API_KEY = config('AZURACAST_API_KEY') + diff --git a/server/proj/conf/urls.py b/server/proj/conf/urls.py index 2bc3e01..f08a65e 100644 --- a/server/proj/conf/urls.py +++ b/server/proj/conf/urls.py @@ -11,7 +11,6 @@ from rest_framework import routers from userProfile.views import TeamViewSet from django.conf import settings from rubricks.views import RubricViewSet -from api.views import FetchAndServeFile from audio.views import SongViewSet, PlayListViewSet @@ -20,7 +19,6 @@ router.register(r'teams', TeamViewSet, basename='teams') router.register(r'rubriks', RubricViewSet, basename='rubriks') router.register(r'playlists', PlayListViewSet, basename='playlists') router.register(r'song', SongViewSet, basename='song') -router.register(r'fetchandservefile', FetchAndServeFile, basename='fetchandservefile') urlpatterns = [ path('api/admin/', admin.site.urls), @@ -31,8 +29,7 @@ urlpatterns = [ path('api/', include_docs_urls(title='API docs')), path('api/radio/', include(router.urls)), path('api-auth/', include('rest_framework.urls', namespace='rest_framework')), - path('api/user/', include('account.urls', namespace='user')), - # path('webhook/', AzuraNowPlayingWebhookView.as_view(), name='webhook-receiver'), + path('api/user/', include('account.urls', namespace='user')) ] if settings.DEBUG: