Esempio n. 1
0
 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
Esempio n. 2
0
 def _search_id(self, id_tmdb: int) -> Generator[MetadataMovie, None, None]:
     response = tmdb_movies(self.api_key, id_tmdb, cache=self.cache)
     yield MetadataMovie(
         name=response["title"],
         year=response["release_date"],
         synopsis=response["overview"],
         id_tmdb=response["id"],
         id_imdb=response["imdb_id"],
     )
Esempio n. 3
0
 def _lookup_movie(self, id_imdb: str) -> Iterator[MetadataMovie]:
     assert self.api_key
     response = omdb_title(self.api_key, id_imdb, cache=self.cache)
     try:
         release_date = dt.datetime.strptime(
             response["Released"], "%d %b %Y").strftime("%Y-%m-%d")
     except (KeyError, ValueError):
         if response.get("Year") in (None, "N/A"):
             release_date = None
         else:
             release_date = "{}-01-01".format(response["Year"])
     meta = MetadataMovie(
         name=response["Title"],
         year=release_date,
         synopsis=response["Plot"],
         id_imdb=response["imdbID"],
     )
     if meta.synopsis == "N/A":
         meta.synopsis = None
     yield meta
Esempio n. 4
0
 def _search_id(
     self, id_tmdb: int, language: Optional[Language] = None
 ) -> Generator[MetadataMovie, None, None]:
     response = tmdb_movies(self.api_key, id_tmdb, language, self.cache)
     yield MetadataMovie(
         name=response["title"],
         language=language,
         year=response["release_date"],
         synopsis=response["overview"],
         id_tmdb=response["id"],
         id_imdb=response["imdb_id"],
     )
def test_search__missing(provider: Omdb):
    query = MetadataMovie()
    with pytest.raises(MnamerNotFoundException):
        next(provider.search(query))
def test_search__no_hits(provider: Omdb):
    query = MetadataMovie(name=JUNK_TEXT)
    with pytest.raises(MnamerNotFoundException):
        next(provider.search(query))
def test_search__name__year(meta, provider: Omdb):
    provider = Omdb()
    query = MetadataMovie(name=meta["name"], year=meta["year"])
    for result in provider.search(query):
        assert (result.year - int(meta["year"])) <= 2
def test_search__name(meta, provider: Omdb):
    provider = Omdb()
    query = MetadataMovie(name=meta["name"])
    assert any(result.id_imdb == meta["id_imdb"]
               for result in provider.search(query))
def test_search__id(meta: Dict[str, str], provider: Omdb):
    query = MetadataMovie(id_imdb=meta["id_imdb"])
    results = list(provider.search(query))
    assert len(results) == 1
    result = results[0]
    assert result.name == meta["name"]
Esempio n. 10
0
def test_search__name(meta: dict, provider: Tmdb):
    query = MetadataMovie(name=meta["name"])
    assert any(result.id_tmdb == meta["id_tmdb"]
               for result in provider.search(query))
Esempio n. 11
0
def test_search_id(meta: dict, provider: Tmdb):
    query = MetadataMovie(id_tmdb=meta["id_tmdb"])
    results = list(provider.search(query))
    assert len(results) == 1
    result = results[0]
    assert result.name == meta["name"]