diff --git a/src/program/apis/listrr_api.py b/src/program/apis/listrr_api.py index 71d35124..67ca8a6d 100644 --- a/src/program/apis/listrr_api.py +++ b/src/program/apis/listrr_api.py @@ -55,15 +55,26 @@ def get_items_from_Listrr(self, content_type, content_lists) -> list[MediaItem] url = f"api/List/{content_type}/{list_id}/ReleaseDate/Descending/{page}" response = self.request_handler.execute(HttpMethod.GET, url) data = response.data - total_pages = data.get("pages", 1) - for item in data.get("items", []): - imdb_id = item.get("imDbId") - if imdb_id: + total_pages = data.pages if hasattr(data, "pages") else 1 + for item in data.items if hasattr(data, "items") else []: + + try: + imdb_id = item.imDbId or ( + self.trakt_api.get_imdbid_from_tmdb(item.tmDbId) + if content_type == "Movies" and item.tmDbId + else None + ) + + if not imdb_id: + continue + if imdb_id in unique_ids: + logger.warning(f"Skipping duplicate item {imdb_id}") + continue + unique_ids.add(imdb_id) - elif content_type == "Movies" and item.get("tmDbId"): - imdb_id = self.trakt_api.get_imdbid_from_tmdb(item["tmDbId"]) - if imdb_id: - unique_ids.add(imdb_id) + except AttributeError: + logger.warning(f"Skipping item {item} as it does not have an IMDb ID or TMDb ID") + continue except HTTPError as e: if e.response.status_code in [400, 404, 429, 500]: break diff --git a/src/program/services/content/listrr.py b/src/program/services/content/listrr.py index 06b6e34f..9011191d 100644 --- a/src/program/services/content/listrr.py +++ b/src/program/services/content/listrr.py @@ -64,6 +64,6 @@ def run(self) -> Generator[MediaItem, None, None]: return imdb_ids = movie_items + show_items - listrr_items = [MediaItem({"imdb_id": imdb_id, "requested_by": self.api.key}) for imdb_id in imdb_ids if imdb_id.startswith("tt")] + listrr_items = [MediaItem({"imdb_id": imdb_id, "requested_by": self.key}) for imdb_id in imdb_ids if imdb_id.startswith("tt")] logger.info(f"Fetched {len(listrr_items)} items from Listrr") yield listrr_items \ No newline at end of file