mirror of
https://github.com/Arrowar/StreamingCommunity.git
synced 2025-06-07 12:05:35 +00:00
52 lines
1.9 KiB
Python
52 lines
1.9 KiB
Python
import json
|
|
|
|
from rest_framework import viewsets
|
|
from rest_framework.response import Response
|
|
|
|
from Src.Api import search, get_version_and_domain
|
|
from Src.Api.site import media_search_manager, anime_search
|
|
|
|
|
|
class SearchView(viewsets.ViewSet):
|
|
def get_queryset(self):
|
|
# Questa funzione viene chiamata prima di list e retrieve
|
|
self.search_query = self.request.query_params.get("search_terms")
|
|
self.type_search = self.request.query_params.get("type")
|
|
|
|
media_search_manager.media_list = []
|
|
self.site_version, self.domain = get_version_and_domain()
|
|
self.len_database = 0
|
|
if self.type_search == "film":
|
|
self.len_database = search(self.search_query, self.domain)
|
|
elif self.type_search == "anime":
|
|
self.len_database = anime_search(self.search_query)
|
|
|
|
return media_search_manager.media_list
|
|
|
|
def list(self, request):
|
|
# Ottieni il queryset dalle impostazioni comuni
|
|
media_list = self.get_queryset()
|
|
|
|
if self.len_database != 0:
|
|
data_to_return = []
|
|
for _, media in enumerate(media_list):
|
|
data_to_return.append(media.to_dict)
|
|
|
|
return Response({"media": data_to_return})
|
|
|
|
return Response({"error": "No media found with that search query"})
|
|
|
|
def retrieve(self, request, pk=None):
|
|
# Ottieni il queryset dalle impostazioni comuni
|
|
media_list = self.get_queryset()
|
|
|
|
# FIXME: Non funziona perchè si aspetta un termine di ricerca da usare nel queryset,
|
|
# implementare una ricerca per ID nell'api per permettere questo metodo
|
|
|
|
# Cerca il media in base allo site_id
|
|
media = next((m for m in media_list if m.get_site_id == pk), None)
|
|
if media:
|
|
return Response(media.to_dict)
|
|
else:
|
|
return Response({"error": "Media not found"}, status=404)
|