mirror of
https://github.com/Arrowar/StreamingCommunity.git
synced 2025-06-07 12:05:35 +00:00
created retrieve method for search
This commit is contained in:
parent
031371897d
commit
1c267af489
@ -41,6 +41,37 @@ class MediaItem:
|
|||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"MediaItem(id={self.id}, slug='{self.slug}', name='{self.name}', type='{self.type}', score='{self.score}', sub_ita={self.sub_ita}, last_air_date='{self.last_air_date}', seasons_count={self.seasons_count}, images={self.images})"
|
return f"MediaItem(id={self.id}, slug='{self.slug}', name='{self.name}', type='{self.type}', score='{self.score}', sub_ita={self.sub_ita}, last_air_date='{self.last_air_date}', seasons_count={self.seasons_count}, images={self.images})"
|
||||||
|
|
||||||
|
@property
|
||||||
|
def to_dict(self) -> dict:
|
||||||
|
"""
|
||||||
|
Convert the MediaItem to a dictionary.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
dict: The MediaItem as a dictionary.
|
||||||
|
"""
|
||||||
|
return {
|
||||||
|
"id": self.id,
|
||||||
|
"slug": self.slug,
|
||||||
|
"name": self.name,
|
||||||
|
"type": self.type,
|
||||||
|
"score": self.score,
|
||||||
|
"sub_ita": self.sub_ita,
|
||||||
|
"last_air_date": self.last_air_date,
|
||||||
|
"seasons_count": self.seasons_count,
|
||||||
|
"images": [image.__dict__ for image in self.images],
|
||||||
|
"comment": self.comment
|
||||||
|
}
|
||||||
|
|
||||||
|
@property
|
||||||
|
def get_site_id(self) -> str:
|
||||||
|
"""
|
||||||
|
Get the site ID of the media item.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
int: The site ID of the media item.
|
||||||
|
"""
|
||||||
|
return f"{self.id}-{self.slug}"
|
||||||
|
|
||||||
|
|
||||||
class MediaManager:
|
class MediaManager:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
import json
|
||||||
|
|
||||||
from rest_framework import viewsets
|
from rest_framework import viewsets
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
|
|
||||||
@ -6,28 +8,44 @@ from Src.Api.site import media_search_manager, anime_search
|
|||||||
|
|
||||||
|
|
||||||
class SearchView(viewsets.ViewSet):
|
class SearchView(viewsets.ViewSet):
|
||||||
def list(self, request):
|
def get_queryset(self):
|
||||||
search_query = request.query_params.get("search_terms")
|
# Questa funzione viene chiamata prima di list e retrieve
|
||||||
type_search = request.query_params.get("type")
|
self.search_query = self.request.query_params.get("search_terms")
|
||||||
|
self.type_search = self.request.query_params.get("type")
|
||||||
|
|
||||||
media_search_manager.media_list = []
|
media_search_manager.media_list = []
|
||||||
site_version, domain = get_version_and_domain()
|
self.site_version, self.domain = get_version_and_domain()
|
||||||
if type_search == "film":
|
self.len_database = 0
|
||||||
len_database = search(search_query, domain)
|
if self.type_search == "film":
|
||||||
elif type_search == "anime":
|
self.len_database = search(self.search_query, self.domain)
|
||||||
len_database = anime_search(search_query)
|
elif self.type_search == "anime":
|
||||||
if len_database != 0:
|
self.len_database = anime_search(self.search_query)
|
||||||
media_list = media_search_manager.media_list
|
|
||||||
|
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 = []
|
data_to_return = []
|
||||||
for i, media in enumerate(media_list):
|
for _, media in enumerate(media_list):
|
||||||
data_to_return.append({
|
data_to_return.append(media.to_dict)
|
||||||
"id": i,
|
|
||||||
"name": media.name,
|
|
||||||
"type": media.type,
|
|
||||||
"score": media.score,
|
|
||||||
"last_air_date": media.last_air_date
|
|
||||||
})
|
|
||||||
|
|
||||||
return Response({"media": data_to_return})
|
return Response({"media": data_to_return})
|
||||||
|
|
||||||
return Response({"error": "No media found with that search query"})
|
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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user