diff --git a/libs/subliminal_patch/providers/opensubtitles.py b/libs/subliminal_patch/providers/opensubtitles.py index 78330c59e..737fadd72 100644 --- a/libs/subliminal_patch/providers/opensubtitles.py +++ b/libs/subliminal_patch/providers/opensubtitles.py @@ -43,6 +43,7 @@ class OpenSubtitlesSubtitle(_OpenSubtitlesSubtitle): self.release_info = movie_release_name self.wrong_fps = False self.skip_wrong_fps = skip_wrong_fps + self.movie_imdb_id = movie_imdb_id def get_fps(self): try: @@ -90,6 +91,10 @@ class OpenSubtitlesSubtitle(_OpenSubtitlesSubtitle): self.query_parameters.get("tag", None)) matches.add("hash") + # imdb_id match so we'll consider year as matching + if self.movie_imdb_id and video.imdb_id and (self.movie_imdb_id == video.imdb_id): + matches.add("year") + return matches @@ -231,13 +236,13 @@ class OpenSubtitlesProvider(ProviderRetryMixin, _OpenSubtitlesProvider): else: query = [video.title] + video.alternative_titles - return self.query(languages, hash=video.hashes.get('opensubtitles'), size=video.size, imdb_id=video.imdb_id, - query=query, season=season, episode=episode, tag=video.original_name, + return self.query(video, languages, hash=video.hashes.get('opensubtitles'), size=video.size, + imdb_id=video.imdb_id, query=query, season=season, episode=episode, tag=video.original_name, use_tag_search=self.use_tag_search, only_foreign=self.only_foreign, also_foreign=self.also_foreign) - def query(self, languages, hash=None, size=None, imdb_id=None, query=None, season=None, episode=None, tag=None, - use_tag_search=False, only_foreign=False, also_foreign=False): + def query(self, video, languages, hash=None, size=None, imdb_id=None, query=None, season=None, episode=None, + tag=None, use_tag_search=False, only_foreign=False, also_foreign=False): # fill the search criteria criteria = [] if hash and size: @@ -294,7 +299,10 @@ class OpenSubtitlesProvider(ProviderRetryMixin, _OpenSubtitlesProvider): movie_name = _subtitle_item['MovieName'] movie_release_name = _subtitle_item['MovieReleaseName'] movie_year = int(_subtitle_item['MovieYear']) if _subtitle_item['MovieYear'] else None - movie_imdb_id = 'tt' + _subtitle_item['IDMovieImdb'] + if season or episode: + movie_imdb_id = 'tt' + _subtitle_item['SeriesIMDBParent'] + else: + movie_imdb_id = 'tt' + _subtitle_item['IDMovieImdb'] movie_fps = _subtitle_item.get('MovieFPS') series_season = int(_subtitle_item['SeriesSeason']) if _subtitle_item['SeriesSeason'] else None series_episode = int(_subtitle_item['SeriesEpisode']) if _subtitle_item['SeriesEpisode'] else None @@ -321,6 +329,9 @@ class OpenSubtitlesProvider(ProviderRetryMixin, _OpenSubtitlesProvider): if language not in languages: continue + if video.imdb_id and (movie_imdb_id != video.imdb_id): + continue + query_parameters = _subtitle_item.get("QueryParameters") subtitle = self.subtitle_class(language, hearing_impaired, page_link, subtitle_id, matched_by,