Fixed improper update of providers pool when forced subtitles are involved. #1977

This commit is contained in:
morpheus65535 2022-10-31 06:46:01 -04:00
parent 15f0e502a5
commit 0b8274ec3e
3 changed files with 22 additions and 23 deletions

View File

@ -17,7 +17,7 @@ from languages.get_languages import alpha3_from_alpha2
from subtitles.tools.score import movie_score, series_score
from .pool import update_pools, _get_pool
from .utils import get_video, _get_lang_obj, _get_scores
from .utils import get_video, _get_lang_obj, _get_scores, _set_forced_providers
from .processing import process_subtitle
@ -39,8 +39,9 @@ def generate_subtitles(path, languages, audio_language, sceneName, title, media_
language_set = _get_language_obj(languages=languages)
hi_required = any([x.hi for x in language_set])
forced_required = any([x.forced for x in language_set])
_set_forced_providers(forced_required=forced_required, pool=pool)
also_forced = any([x.forced for x in language_set])
forced_required = all([x.forced for x in language_set])
_set_forced_providers(pool=pool, also_forced=also_forced, forced_required=forced_required)
video = get_video(force_unicode(path), title, sceneName, providers=providers, media_type=media_type)
@ -140,16 +141,3 @@ def _get_language_obj(languages):
language_set.add(lang_obj)
return language_set
def _set_forced_providers(forced_required, pool):
# TODO: maybe a separate pool for forced configs? only_foreign is hardcoded
# in get_providers and this causes updating the pool on every call
if forced_required:
pool.provider_configs.update(
{
"podnapisi": {"only_foreign": True},
"subscene": {"only_foreign": True},
"opensubtitles": {"only_foreign": True}
}
)

View File

@ -20,7 +20,7 @@ from app.database import get_profiles_list
from subtitles.tools.score import movie_score, series_score
from .pool import update_pools, _get_pool, _init_pool
from .utils import get_video, _get_lang_obj, _get_scores
from .utils import get_video, _get_lang_obj, _get_scores, _set_forced_providers
from .processing import process_subtitle
@ -34,7 +34,8 @@ def manual_search(path, profile_id, providers, sceneName, title, media_type):
language_set, initial_language_set, original_format = _get_language_obj(profile_id=profile_id)
also_forced = any([x.forced for x in initial_language_set])
_set_forced_providers(also_forced=also_forced, pool=pool)
forced_required = all([x.forced for x in initial_language_set])
_set_forced_providers(pool=pool, also_forced=also_forced, forced_required=forced_required)
if providers:
video = get_video(force_unicode(path), title, sceneName, providers=providers, media_type=media_type)
@ -264,8 +265,3 @@ def _get_language_obj(profile_id):
language_set.add(lang_obj_hi)
return language_set, initial_language_set, original_format
def _set_forced_providers(also_forced, pool):
if also_forced:
pool.provider_configs.update({'podnapisi': {'also_foreign': True}, 'opensubtitles': {'also_foreign': True}})

View File

@ -84,3 +84,18 @@ def get_ban_list(profile_id):
return {'must_contain': profile['mustContain'] or [],
'must_not_contain': profile['mustNotContain'] or []}
return None
def _set_forced_providers(pool, also_forced=False, forced_required=False):
# TODO: maybe a separate pool for forced configs? also_foreign/only_foreign is hardcoded
# in get_providers and this causes updating the pool on every call
if also_forced and forced_required:
logging.debug('also_forced and forced_required cannot be both True. also_forced will prevail.')
forced_required = False
pool.provider_configs.update(
{
"podnapisi": {'also_foreign': also_forced, "only_foreign": forced_required},
"subscene": {"only_foreign": forced_required},
"opensubtitles": {'also_foreign': also_forced, "only_foreign": forced_required}
}
)