def _search_movie( self, name: str, year: int ) -> Generator[MetadataMovie, None, None]: assert self.api_key year_from, year_to = year_range_parse(year) found = False page = 1 page_max = 10 # each page yields a maximum of 10 results while True: try: response = omdb_search( api_key=self.api_key, media=MediaType.MOVIE.value, query=name, page=page, cache=self.cache, ) except MnamerNotFoundException: break for entry in response["Search"]: if year_from <= int(entry["Year"]) <= year_to: yield from self._lookup_movie(entry["imdbID"]) found = True if page >= page_max: break page += 1 if not found: raise MnamerNotFoundException
def _search_name(self, name: str, year: Optional[int]): year_from, year_to = year_range_parse(year) page = 1 page_max = 5 # each page yields a maximum of 20 results found = False while True: response = tmdb_search_movies(self.api_key, name, year, page=page, cache=self.cache) for entry in response["results"]: try: meta = MetadataMovie( id_tmdb=entry["id"], name=entry["title"], synopsis=entry["overview"], year=entry["release_date"], ) if year_from <= meta.year <= year_to: yield meta found = True except (AttributeError, KeyError, TypeError, ValueError): continue if page == response["total_pages"]: break elif page >= page_max: break page += 1 if not found: raise MnamerNotFoundException