From 5f61f4d3a347727f8f96e6b814a7befcaa976b96 Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Sun, 12 May 2024 23:05:32 +0200 Subject: [PATCH] Add tvdb search --- scanner/providers/implementations/thetvdb.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/scanner/providers/implementations/thetvdb.py b/scanner/providers/implementations/thetvdb.py index 9d08f866..cd163e66 100644 --- a/scanner/providers/implementations/thetvdb.py +++ b/scanner/providers/implementations/thetvdb.py @@ -1,21 +1,19 @@ import asyncio from datetime import timedelta, datetime -from math import e +from urllib.parse import urlencode from aiohttp import ClientSession from logging import getLogger -from typing import Optional, Any, Literal, Callable +from typing import Optional, Any, Callable, OrderedDict from matcher.cache import cache from ..provider import Provider, ProviderError -from ..types.movie import Movie, MovieTranslation, Status as MovieStatus from ..types.season import Season, SeasonTranslation from ..types.episode import Episode, EpisodeTranslation, PartialShow, EpisodeID from ..types.studio import Studio from ..types.genre import Genre from ..types.metadataid import MetadataID from ..types.show import Show, ShowTranslation, Status as ShowStatus -from ..types.collection import Collection, CollectionTranslation logger = getLogger(__name__) @@ -112,9 +110,14 @@ class TVDB(Provider): def name(self) -> str: return "tvdb" - async def search_show(self, name: str, year: Optional[int]) -> Show: - show_id = "" - return await self.identify_show(show_id) + async def search_show(self, name: str, year: Optional[int]) -> str: + query = OrderedDict( + query=name, + year=year, + type="series", + ) + ret = await self.get(f"search?{urlencode(query)}") + return ret["data"][0]["tvdb_id"] @cache(ttl=timedelta(days=1)) async def get_episodes( @@ -144,8 +147,7 @@ class TVDB(Provider): absolute: Optional[int], year: Optional[int], ) -> Episode: - show = await self.search_show(name, year) - show_id = show.external_id[self.name].data_id + show_id = await self.search_show(name, year) return await self.identify_episode(show_id, season, episode_nbr, absolute) async def identify_episode(