diff --git a/bazarr/subtitles/download.py b/bazarr/subtitles/download.py index c4a8e2da7..5f588fbf6 100644 --- a/bazarr/subtitles/download.py +++ b/bazarr/subtitles/download.py @@ -24,8 +24,9 @@ from .processing import process_subtitle @update_pools -def generate_subtitles(path, languages, audio_language, sceneName, title, media_type, - forced_minimum_score=None, is_upgrade=False, profile_id=None, check_if_still_required=False): +def generate_subtitles(path, languages, audio_language, sceneName, title, media_type, forced_minimum_score=None, + is_upgrade=False, profile_id=None, check_if_still_required=False, + previous_subtitles_to_delete=None): if not languages: return None @@ -87,6 +88,13 @@ def generate_subtitles(path, languages, audio_language, sceneName, title, media_ fld = get_target_folder(path) chmod = int(settings.general.chmod, 8) if not sys.platform.startswith( 'win') and settings.general.chmod_enabled else None + if is_upgrade and previous_subtitles_to_delete: + try: + # delete previously downloaded subtitles in case of an upgrade to prevent edge loop + # issue. + os.remove(previous_subtitles_to_delete) + except (OSError, FileNotFoundError): + pass saved_subtitles = save_subtitles(video.original_path, subtitles, single=settings.general.single_language, tags=None, # fixme diff --git a/bazarr/subtitles/upgrade.py b/bazarr/subtitles/upgrade.py index eb072b500..4593c71bc 100644 --- a/bazarr/subtitles/upgrade.py +++ b/bazarr/subtitles/upgrade.py @@ -110,7 +110,9 @@ def upgrade_subtitles(): episode['seriesTitle'], 'series', forced_minimum_score=int(episode['score']), - is_upgrade=True)) + is_upgrade=True, + previous_subtitles_to_delete=path_mappings.path_replace( + episode['subtitles_path']))) if result: if isinstance(result, list) and len(result): @@ -195,7 +197,9 @@ def upgrade_subtitles(): movie['title'], 'movie', forced_minimum_score=int(movie['score']), - is_upgrade=True)) + is_upgrade=True, + previous_subtitles_to_delete=path_mappings.path_replace_movie( + movie['subtitles_path']))) if result: if isinstance(result, list) and len(result): result = result[0]