From f057a778203e9729b6a02ff137388de361c0406b Mon Sep 17 00:00:00 2001 From: morpheus65535 Date: Tue, 31 Jan 2023 14:52:13 -0500 Subject: [PATCH] Improved impact on opensubtitles.com provider by simplifying queries to improve cache usage. --- .../providers/opensubtitlescom.py | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/libs/subliminal_patch/providers/opensubtitlescom.py b/libs/subliminal_patch/providers/opensubtitlescom.py index 532998c0d..a1603d822 100644 --- a/libs/subliminal_patch/providers/opensubtitlescom.py +++ b/libs/subliminal_patch/providers/opensubtitlescom.py @@ -274,15 +274,6 @@ class OpenSubtitlesComProvider(ProviderRetryMixin, Provider): return [] lang_strings = [str(lang.basename) for lang in languages] - only_foreign = all([lang.forced for lang in languages]) - also_foreign = any([lang.forced for lang in languages]) - if only_foreign: - forced = 'only' - elif also_foreign: - forced = 'include' - else: - forced = 'exclude' - langs = ','.join(lang_strings) logging.debug(f'Searching for this languages: {lang_strings}') @@ -292,7 +283,6 @@ class OpenSubtitlesComProvider(ProviderRetryMixin, Provider): lambda: checked( lambda: self.session.get(self.server_url + 'subtitles', params=(('episode_number', self.video.episode), - ('foreign_parts_only', forced), ('imdb_id', imdb_id if not title_id else None), ('languages', langs.lower()), ('moviehash', file_hash), @@ -308,8 +298,7 @@ class OpenSubtitlesComProvider(ProviderRetryMixin, Provider): res = self.retry( lambda: checked( lambda: self.session.get(self.server_url + 'subtitles', - params=(('foreign_parts_only', forced), - ('id', title_id if title_id else None), + params=(('id', title_id if title_id else None), ('imdb_id', imdb_id if not title_id else None), ('languages', langs.lower()), ('moviehash', file_hash)), @@ -324,6 +313,14 @@ class OpenSubtitlesComProvider(ProviderRetryMixin, Provider): result = res.json() + # filter out forced subtitles or not depending on the required languages + if all([lang.forced for lang in languages]): # only forced + result['data'] = [x for x in result['data'] if x['attributes']['foreign_parts_only']] + elif any([lang.forced for lang in languages]): # also forced + pass + else: # not forced + result['data'] = [x for x in result['data'] if not x['attributes']['foreign_parts_only']] + logging.debug(f"Query returned {len(result['data'])} subtitles") if len(result['data']):