From a2816f37613991b53a82b199dd10fabe3a913b8f Mon Sep 17 00:00:00 2001 From: morpheus65535 Date: Tue, 17 Aug 2021 13:10:27 -0400 Subject: [PATCH] Fixed an issue with ffprobe caching. Could be fixing a small part of the issue in #1502. --- bazarr/embedded_subs_reader.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/bazarr/embedded_subs_reader.py b/bazarr/embedded_subs_reader.py index 77c682f27..c0f99ae0c 100644 --- a/bazarr/embedded_subs_reader.py +++ b/bazarr/embedded_subs_reader.py @@ -9,6 +9,7 @@ from enzyme.exceptions import MalformedMKVError from enzyme.exceptions import MalformedMKVError from custom_lang import CustomLanguage from database import TableEpisodes, TableMovies +from helper import path_mappings logger = logging.getLogger(__name__) @@ -77,14 +78,12 @@ def parse_video_metadata(file, file_size, episode_file_id=None, movie_file_id=No # Get the actual cache value form database if episode_file_id: cache_key = TableEpisodes.select(TableEpisodes.ffprobe_cache)\ - .where((TableEpisodes.episode_file_id == episode_file_id) and - (TableEpisodes.file_size == file_size))\ + .where(TableEpisodes.path == path_mappings.path_replace_reverse(file))\ .dicts()\ .get() elif movie_file_id: cache_key = TableMovies.select(TableMovies.ffprobe_cache)\ - .where(TableMovies.movie_file_id == movie_file_id and - TableMovies.file_size == file_size)\ + .where(TableMovies.path == path_mappings.path_replace_reverse_movie(file))\ .dicts()\ .get() else: @@ -110,7 +109,7 @@ def parse_video_metadata(file, file_size, episode_file_id=None, movie_file_id=No if ffprobe_path: api.initialize({"provider": "ffmpeg", "ffmpeg": ffprobe_path}) data["ffprobe"] = api.know(file) - # if nto, we use enzyme for mkv files + # if not, we use enzyme for mkv files else: if os.path.splitext(file)[1] == ".mkv": with open(file, "rb") as f: @@ -127,10 +126,10 @@ def parse_video_metadata(file, file_size, episode_file_id=None, movie_file_id=No # we write to db the result and return the newly cached ffprobe dict if episode_file_id: TableEpisodes.update({TableEpisodes.ffprobe_cache: pickle.dumps(data, pickle.HIGHEST_PROTOCOL)})\ - .where(TableEpisodes.episode_file_id == episode_file_id)\ + .where(TableEpisodes.path == path_mappings.path_replace_reverse(file))\ .execute() elif movie_file_id: TableMovies.update({TableEpisodes.ffprobe_cache: pickle.dumps(data, pickle.HIGHEST_PROTOCOL)})\ - .where(TableMovies.movie_file_id == movie_file_id)\ + .where(TableMovies.path == path_mappings.path_replace_reverse_movie(file))\ .execute() return data