mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-06-03 13:44:33 -04:00
Cleanup composite provider
This commit is contained in:
parent
4cd11152c8
commit
819dbf3aab
@ -4,7 +4,7 @@ from langcodes import Language
|
|||||||
|
|
||||||
from ..models.movie import Movie, SearchMovie
|
from ..models.movie import Movie, SearchMovie
|
||||||
from ..models.serie import SearchSerie, Serie
|
from ..models.serie import SearchSerie, Serie
|
||||||
from .provider import Provider, ProviderError
|
from .provider import Provider
|
||||||
|
|
||||||
|
|
||||||
class CompositeProvider(Provider):
|
class CompositeProvider(Provider):
|
||||||
@ -27,24 +27,6 @@ class CompositeProvider(Provider):
|
|||||||
async def get_movie(self, external_id: dict[str, str]) -> Movie | None:
|
async def get_movie(self, external_id: dict[str, str]) -> Movie | None:
|
||||||
return await self._themoviedb.get_movie(external_id)
|
return await self._themoviedb.get_movie(external_id)
|
||||||
|
|
||||||
async def find_movie(
|
|
||||||
self, title: str, year: int | None, external_id: dict[str, str]
|
|
||||||
) -> Movie:
|
|
||||||
ret = await self.get_movie(external_id)
|
|
||||||
if ret is not None:
|
|
||||||
return ret
|
|
||||||
search = await self.search_movies(title, year, language=[])
|
|
||||||
if not any(search):
|
|
||||||
raise ProviderError(
|
|
||||||
f"Couldn't find a movie with title {title}. (year: {year}"
|
|
||||||
)
|
|
||||||
ret = await self.get_movie(
|
|
||||||
{k: v.data_id for k, v in search[0].external_id.items()}
|
|
||||||
)
|
|
||||||
if not ret:
|
|
||||||
raise ValueError()
|
|
||||||
return ret
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
async def search_series(
|
async def search_series(
|
||||||
self, title: str, year: int | None, *, language: list[Language]
|
self, title: str, year: int | None, *, language: list[Language]
|
||||||
@ -58,21 +40,3 @@ class CompositeProvider(Provider):
|
|||||||
return None
|
return None
|
||||||
# TODO: complete metadata with info from tmdb
|
# TODO: complete metadata with info from tmdb
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
async def find_serie(
|
|
||||||
self, title: str, year: int | None, external_id: dict[str, str]
|
|
||||||
) -> Serie:
|
|
||||||
ret = await self.get_serie(external_id)
|
|
||||||
if ret is not None:
|
|
||||||
return ret
|
|
||||||
search = await self.search_series(title, year, language=[])
|
|
||||||
if not any(search):
|
|
||||||
raise ProviderError(
|
|
||||||
f"Couldn't find a serie with title {title}. (year: {year}"
|
|
||||||
)
|
|
||||||
ret = await self.get_serie(
|
|
||||||
{k: v.data_id for k, v in search[0].external_id.items()}
|
|
||||||
)
|
|
||||||
if not ret:
|
|
||||||
raise ValueError()
|
|
||||||
return ret
|
|
||||||
|
@ -35,6 +35,42 @@ class Provider(ABC):
|
|||||||
async def get_serie(self, external_id: dict[str, str]) -> Serie | None:
|
async def get_serie(self, external_id: dict[str, str]) -> Serie | None:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
async def find_movie(
|
||||||
|
self, title: str, year: int | None, external_id: dict[str, str]
|
||||||
|
) -> Movie:
|
||||||
|
ret = await self.get_movie(external_id)
|
||||||
|
if ret is not None:
|
||||||
|
return ret
|
||||||
|
search = await self.search_movies(title, year, language=[])
|
||||||
|
if not any(search):
|
||||||
|
raise ProviderError(
|
||||||
|
f"Couldn't find a movie with title {title}. (year: {year}"
|
||||||
|
)
|
||||||
|
ret = await self.get_movie(
|
||||||
|
{k: v.data_id for k, v in search[0].external_id.items()}
|
||||||
|
)
|
||||||
|
if not ret:
|
||||||
|
raise ValueError()
|
||||||
|
return ret
|
||||||
|
|
||||||
|
async def find_serie(
|
||||||
|
self, title: str, year: int | None, external_id: dict[str, str]
|
||||||
|
) -> Serie:
|
||||||
|
ret = await self.get_serie(external_id)
|
||||||
|
if ret is not None:
|
||||||
|
return ret
|
||||||
|
search = await self.search_series(title, year, language=[])
|
||||||
|
if not any(search):
|
||||||
|
raise ProviderError(
|
||||||
|
f"Couldn't find a serie with title {title}. (year: {year}"
|
||||||
|
)
|
||||||
|
ret = await self.get_serie(
|
||||||
|
{k: v.data_id for k, v in search[0].external_id.items()}
|
||||||
|
)
|
||||||
|
if not ret:
|
||||||
|
raise ValueError()
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
class ProviderError(RuntimeError):
|
class ProviderError(RuntimeError):
|
||||||
def __init__(self, *args: object) -> None:
|
def __init__(self, *args: object) -> None:
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
import os
|
import os
|
||||||
from collections.abc import Generator
|
from collections.abc import Generator
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime
|
||||||
from itertools import accumulate, zip_longest
|
|
||||||
from logging import getLogger
|
from logging import getLogger
|
||||||
from statistics import mean
|
from statistics import mean
|
||||||
from typing import Any, cast, override
|
from typing import Any, cast, override
|
||||||
@ -10,8 +9,6 @@ from typing import Any, cast, override
|
|||||||
from aiohttp import ClientSession
|
from aiohttp import ClientSession
|
||||||
from langcodes import Language
|
from langcodes import Language
|
||||||
|
|
||||||
from matcher.cache import cache
|
|
||||||
|
|
||||||
from ..models.collection import Collection, CollectionTranslation
|
from ..models.collection import Collection, CollectionTranslation
|
||||||
from ..models.entry import Entry, EntryTranslation
|
from ..models.entry import Entry, EntryTranslation
|
||||||
from ..models.genre import Genre
|
from ..models.genre import Genre
|
||||||
|
Loading…
x
Reference in New Issue
Block a user