Fix: Include backend/audio Django app in repository
This commit is contained in:
parent
d04e726373
commit
644cfab298
37 changed files with 6632 additions and 4 deletions
103
backend/audio/views_quick_sync.py
Normal file
103
backend/audio/views_quick_sync.py
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
"""Views for Quick Sync adaptive streaming"""
|
||||
from rest_framework.views import APIView
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
from rest_framework import status
|
||||
from django.core.cache import cache
|
||||
|
||||
from audio.quick_sync_service import QuickSyncService
|
||||
|
||||
|
||||
class QuickSyncStatusView(APIView):
|
||||
"""Get Quick Sync status and recommendations"""
|
||||
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def get(self, request):
|
||||
"""Get current quick sync status"""
|
||||
service = QuickSyncService()
|
||||
user_prefs = service.get_user_preferences(request.user.id)
|
||||
sync_status = service.get_quick_sync_status(user_prefs)
|
||||
|
||||
return Response({
|
||||
'status': sync_status,
|
||||
'preferences': user_prefs,
|
||||
})
|
||||
|
||||
|
||||
class QuickSyncPreferencesView(APIView):
|
||||
"""Manage Quick Sync user preferences"""
|
||||
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def get(self, request):
|
||||
"""Get user's quick sync preferences"""
|
||||
service = QuickSyncService()
|
||||
prefs = service.get_user_preferences(request.user.id)
|
||||
|
||||
return Response(prefs)
|
||||
|
||||
def post(self, request):
|
||||
"""Update user's quick sync preferences"""
|
||||
service = QuickSyncService()
|
||||
|
||||
preferences = {
|
||||
'mode': request.data.get('mode', 'auto'),
|
||||
'prefer_quality': request.data.get('prefer_quality', True),
|
||||
'adapt_to_system': request.data.get('adapt_to_system', True),
|
||||
'auto_download_quality': request.data.get('auto_download_quality', False),
|
||||
}
|
||||
|
||||
success = service.update_user_preferences(request.user.id, preferences)
|
||||
|
||||
if success:
|
||||
# Get updated status
|
||||
sync_status = service.get_quick_sync_status(preferences)
|
||||
return Response({
|
||||
'message': 'Quick Sync preferences updated',
|
||||
'preferences': preferences,
|
||||
'status': sync_status,
|
||||
})
|
||||
else:
|
||||
return Response(
|
||||
{'error': 'Failed to update preferences'},
|
||||
status=status.HTTP_400_BAD_REQUEST
|
||||
)
|
||||
|
||||
|
||||
class QuickSyncTestView(APIView):
|
||||
"""Test network speed for Quick Sync"""
|
||||
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def post(self, request):
|
||||
"""Run network speed test"""
|
||||
service = QuickSyncService()
|
||||
|
||||
# Clear cache to force new test
|
||||
cache.delete('quick_sync_network_speed')
|
||||
|
||||
speed = service.measure_network_speed()
|
||||
system_resources = service.get_system_resources()
|
||||
|
||||
return Response({
|
||||
'network_speed_mbps': speed,
|
||||
'system_resources': system_resources,
|
||||
'recommended_quality': service.get_recommended_quality()[0],
|
||||
'timestamp': system_resources['timestamp'],
|
||||
})
|
||||
|
||||
|
||||
class QuickSyncQualityPresetsView(APIView):
|
||||
"""Get available quality presets"""
|
||||
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def get(self, request):
|
||||
"""Get all quality presets"""
|
||||
service = QuickSyncService()
|
||||
|
||||
return Response({
|
||||
'presets': service.QUALITY_PRESETS,
|
||||
'thresholds': service.SPEED_THRESHOLDS,
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue