mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-06-02 21:24:20 -04:00
Add serie search
This commit is contained in:
parent
ff8455e6ec
commit
8269546dd0
@ -16,7 +16,7 @@ from ..models.genre import Genre
|
|||||||
from ..models.metadataid import EpisodeId, MetadataId
|
from ..models.metadataid import EpisodeId, MetadataId
|
||||||
from ..models.movie import Movie, MovieStatus, MovieTranslation, SearchMovie
|
from ..models.movie import Movie, MovieStatus, MovieTranslation, SearchMovie
|
||||||
from ..models.season import Season, SeasonTranslation
|
from ..models.season import Season, SeasonTranslation
|
||||||
from ..models.serie import Serie, SerieStatus, SerieTranslation
|
from ..models.serie import SearchSerie, Serie, SerieStatus, SerieTranslation
|
||||||
from ..models.staff import Character, Person, Role, Staff
|
from ..models.staff import Character, Person, Role, Staff
|
||||||
from ..models.studio import Studio, StudioTranslation
|
from ..models.studio import Studio, StudioTranslation
|
||||||
from ..utils import clean, to_slug
|
from ..utils import clean, to_slug
|
||||||
@ -201,6 +201,40 @@ class TheMovieDatabase(Provider):
|
|||||||
staff=[self._map_staff(x) for x in movie["credits"]["cast"]],
|
staff=[self._map_staff(x) for x in movie["credits"]["cast"]],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@override
|
||||||
|
async def search_series(
|
||||||
|
self, title: str, year: int | None, *, language: list[Language]
|
||||||
|
) -> list[SearchSerie]:
|
||||||
|
search = (
|
||||||
|
await self._get(
|
||||||
|
"search/tv",
|
||||||
|
params={
|
||||||
|
"query": title,
|
||||||
|
"year": year,
|
||||||
|
"languages": [str(x) for x in language],
|
||||||
|
},
|
||||||
|
)
|
||||||
|
)["results"]
|
||||||
|
search = self._sort_search(search, title, year)
|
||||||
|
return [
|
||||||
|
SearchSerie(
|
||||||
|
slug=to_slug(x["name"]),
|
||||||
|
name=x["name"],
|
||||||
|
description=x["overview"],
|
||||||
|
start_air=datetime.strptime(x["first_air_date"], "%Y-%m-%d").date(),
|
||||||
|
end_air=None,
|
||||||
|
poster=self._image_path + x["poster_path"],
|
||||||
|
original_language=Language.get(x["original_language"]),
|
||||||
|
external_id={
|
||||||
|
self.name: MetadataId(
|
||||||
|
data_id=x["id"],
|
||||||
|
link=f"https://www.themoviedb.org/tv/{x['id']}",
|
||||||
|
)
|
||||||
|
},
|
||||||
|
)
|
||||||
|
for x in search
|
||||||
|
]
|
||||||
|
|
||||||
@cache(ttl=timedelta(days=1))
|
@cache(ttl=timedelta(days=1))
|
||||||
async def identify_show(
|
async def identify_show(
|
||||||
self,
|
self,
|
||||||
@ -350,27 +384,6 @@ class TheMovieDatabase(Provider):
|
|||||||
)
|
)
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
@cache(ttl=timedelta(days=1))
|
|
||||||
async def search_show(self, name: str, year: Optional[int]) -> PartialShow:
|
|
||||||
search_results = (
|
|
||||||
await self._get("search/tv", params={"query": name, "year": year})
|
|
||||||
)["results"]
|
|
||||||
|
|
||||||
if len(search_results) == 0:
|
|
||||||
raise ProviderError(f"No result for a tv show named: {name}")
|
|
||||||
|
|
||||||
search = self._sort_search(search_results, name, year)
|
|
||||||
show_id = search["id"]
|
|
||||||
return PartialShow(
|
|
||||||
name=search["name"],
|
|
||||||
original_language=search["original_language"],
|
|
||||||
external_id={
|
|
||||||
self.name: MetadataID(
|
|
||||||
show_id, f"https://www.themoviedb.org/tv/{show_id}"
|
|
||||||
)
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
async def search_episode(
|
async def search_episode(
|
||||||
self,
|
self,
|
||||||
name: str,
|
name: str,
|
||||||
@ -687,7 +700,7 @@ class TheMovieDatabase(Provider):
|
|||||||
path: str,
|
path: str,
|
||||||
*,
|
*,
|
||||||
params: dict[str, Any] = {},
|
params: dict[str, Any] = {},
|
||||||
not_found_fail: Optional[str] = None,
|
not_found_fail: str | None = None,
|
||||||
):
|
):
|
||||||
params = {k: v for k, v in params.items() if v is not None}
|
params = {k: v for k, v in params.items() if v is not None}
|
||||||
async with self._client.get(
|
async with self._client.get(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user