From 6b6e466c7d053be137127d38d924e296cc03f192 Mon Sep 17 00:00:00 2001 From: g0ldyy <153996346+g0ldyy@users.noreply.github.com> Date: Fri, 2 Jan 2026 14:56:37 +0100 Subject: [PATCH 1/2] feat: add fallback to check watch providers for movie release dates when upcoming release date is unavailable --- comet/metadata/filter.py | 7 +++++++ comet/metadata/tmdb.py | 13 +++++++++++++ 2 files changed, 20 insertions(+) diff --git a/comet/metadata/filter.py b/comet/metadata/filter.py index 5c1be70..ae1ca01 100644 --- a/comet/metadata/filter.py +++ b/comet/metadata/filter.py @@ -52,6 +52,13 @@ class DigitalReleaseFilter: release_date_str = None if media_type == "movie": release_date_str = await tmdb.get_upcoming_movie_release_date(tmdb_id) + if not release_date_str: + # Check watch providers as fallback + has_watch_providers = await tmdb.get_unique_watch_providers(tmdb_id) + if has_watch_providers: + # Treat as released a long time ago + release_date_str = "1970-01-01" + elif media_type == "series": release_date_str = await tmdb.get_episode_air_date( tmdb_id, season, episode diff --git a/comet/metadata/tmdb.py b/comet/metadata/tmdb.py index ba79ad8..9f54133 100644 --- a/comet/metadata/tmdb.py +++ b/comet/metadata/tmdb.py @@ -77,3 +77,16 @@ class TMDBApi: except Exception as e: logger.error(f"TMDB: Error converting IMDB ID {imdb_id}: {e}") return None + + async def get_unique_watch_providers(self, tmdb_id: str): + try: + url = f"{self.base_url}/movie/{tmdb_id}/watch/providers" + async with self.session.get(url, headers=self.headers) as response: + if response.status != 200: + return None + + data = await response.json() + return bool(data.get("results")) + except Exception as e: + logger.error(f"TMDB: Error getting watch providers for {tmdb_id}: {e}") + return None From 92368e9dc652b40a714b6e29e60a28cc37ed9f52 Mon Sep 17 00:00:00 2001 From: g0ldyy <153996346+g0ldyy@users.noreply.github.com> Date: Fri, 2 Jan 2026 15:02:45 +0100 Subject: [PATCH 2/2] refactor: rename `get_unique_watch_providers` to `has_watch_providers` --- comet/metadata/filter.py | 2 +- comet/metadata/tmdb.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/comet/metadata/filter.py b/comet/metadata/filter.py index ae1ca01..4a7f15c 100644 --- a/comet/metadata/filter.py +++ b/comet/metadata/filter.py @@ -54,7 +54,7 @@ class DigitalReleaseFilter: release_date_str = await tmdb.get_upcoming_movie_release_date(tmdb_id) if not release_date_str: # Check watch providers as fallback - has_watch_providers = await tmdb.get_unique_watch_providers(tmdb_id) + has_watch_providers = await tmdb.has_watch_providers(tmdb_id) if has_watch_providers: # Treat as released a long time ago release_date_str = "1970-01-01" diff --git a/comet/metadata/tmdb.py b/comet/metadata/tmdb.py index 9f54133..4757c5e 100644 --- a/comet/metadata/tmdb.py +++ b/comet/metadata/tmdb.py @@ -78,7 +78,7 @@ class TMDBApi: logger.error(f"TMDB: Error converting IMDB ID {imdb_id}: {e}") return None - async def get_unique_watch_providers(self, tmdb_id: str): + async def has_watch_providers(self, tmdb_id: str): try: url = f"{self.base_url}/movie/{tmdb_id}/watch/providers" async with self.session.get(url, headers=self.headers) as response: