diff --git a/libs/subliminal_patch/providers/subdivx.py b/libs/subliminal_patch/providers/subdivx.py index b20523cbf..6bdc58eb0 100644 --- a/libs/subliminal_patch/providers/subdivx.py +++ b/libs/subliminal_patch/providers/subdivx.py @@ -136,6 +136,9 @@ class SubdivxSubtitlesProvider(Provider): if len(subtitles) <= 5: subtitles += self._handle_multi_page_search(video.series, video, 1) + # Try with episode title as last resort + if not subtitles and video.title != video.series: + subtitles += self._handle_multi_page_search(video.title, video, 1) else: for query in (video.title, f"{video.title} ({video.year})"): subtitles += self._handle_multi_page_search(query, video) @@ -309,6 +312,14 @@ def _check_episode(video, title): logger.debug("Series year doesn't match: %s", title) return False + # Include matches where the episode title is present + if ( + video.series.lower() in title.lower() + and (video.title or "").lower() in title.lower() + ): + logger.debug("Episode title found in title: %s ~ %s", video.title, title) + return True + if season_num is None: logger.debug("Not a season/episode: %s", title) return False diff --git a/tests/subliminal_patch/test_subdivx.py b/tests/subliminal_patch/test_subdivx.py index 96342075c..33f938766 100644 --- a/tests/subliminal_patch/test_subdivx.py +++ b/tests/subliminal_patch/test_subdivx.py @@ -74,6 +74,19 @@ def test_list_subtitles_episode_with_title_only_fallback(episodes): subtitles = provider.list_subtitles(item, {Language("spa", "MX")}) assert len(subtitles) > 2 +def test_list_subtitles_episode_with_episode_title_fallback(episodes): + item = list(episodes.values())[0] + item.series = "30 for 30" + item.title = "The Two Escobars" + item.season = 1 + item.episode = 16 + + with SubdivxSubtitlesProvider() as provider: + sub = provider.list_subtitles(item, {Language("spa", "MX")})[0] + assert sub.get_matches(item) + provider.download_subtitle(sub) + assert sub.is_valid() + def test_download_subtitle(movies): subtitle = SubdivxSubtitle(