From a4fe2e01901bf0ef57151b9de19ee40ae99da843 Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Fri, 9 May 2025 01:21:52 +0200 Subject: [PATCH] Cleanup composite provider --- scanner/scanner/providers/composite.py | 38 +------------------ scanner/scanner/providers/provider.py | 36 ++++++++++++++++++ scanner/scanner/providers/themoviedatabase.py | 5 +-- 3 files changed, 38 insertions(+), 41 deletions(-) diff --git a/scanner/scanner/providers/composite.py b/scanner/scanner/providers/composite.py index a1da6c78..5f0e2da5 100644 --- a/scanner/scanner/providers/composite.py +++ b/scanner/scanner/providers/composite.py @@ -4,7 +4,7 @@ from langcodes import Language from ..models.movie import Movie, SearchMovie from ..models.serie import SearchSerie, Serie -from .provider import Provider, ProviderError +from .provider import Provider class CompositeProvider(Provider): @@ -27,24 +27,6 @@ class CompositeProvider(Provider): async def get_movie(self, external_id: dict[str, str]) -> Movie | None: 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 async def search_series( self, title: str, year: int | None, *, language: list[Language] @@ -58,21 +40,3 @@ class CompositeProvider(Provider): return None # TODO: complete metadata with info from tmdb 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 diff --git a/scanner/scanner/providers/provider.py b/scanner/scanner/providers/provider.py index 59ed7858..691c135d 100644 --- a/scanner/scanner/providers/provider.py +++ b/scanner/scanner/providers/provider.py @@ -35,6 +35,42 @@ class Provider(ABC): async def get_serie(self, external_id: dict[str, str]) -> Serie | None: 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): def __init__(self, *args: object) -> None: diff --git a/scanner/scanner/providers/themoviedatabase.py b/scanner/scanner/providers/themoviedatabase.py index 14b6d4f1..7ab7184f 100644 --- a/scanner/scanner/providers/themoviedatabase.py +++ b/scanner/scanner/providers/themoviedatabase.py @@ -1,8 +1,7 @@ import asyncio import os from collections.abc import Generator -from datetime import datetime, timedelta -from itertools import accumulate, zip_longest +from datetime import datetime from logging import getLogger from statistics import mean from typing import Any, cast, override @@ -10,8 +9,6 @@ from typing import Any, cast, override from aiohttp import ClientSession from langcodes import Language -from matcher.cache import cache - from ..models.collection import Collection, CollectionTranslation from ..models.entry import Entry, EntryTranslation from ..models.genre import Genre