From cae5dbb41c1db66defc1790fbc807949bb4f184c Mon Sep 17 00:00:00 2001 From: Brett Williams Date: Thu, 15 Jun 2023 11:26:52 -0500 Subject: [PATCH] Fix failing thumbnail generation --- lib/utilities/ffmpeg_helper.py | 2 +- lib/utilities/server_helper.py | 23 ++++++++++------------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/lib/utilities/ffmpeg_helper.py b/lib/utilities/ffmpeg_helper.py index 0ce0131..62d2f26 100644 --- a/lib/utilities/ffmpeg_helper.py +++ b/lib/utilities/ffmpeg_helper.py @@ -1,6 +1,6 @@ import subprocess import ffmpeg # todo: remove all references to ffmpeg library and instead use direct subprocesses -from ..engines.ffmpeg_engine import FFMPEG +from lib.engines.ffmpeg_engine import FFMPEG def file_info(path): diff --git a/lib/utilities/server_helper.py b/lib/utilities/server_helper.py index 909826a..0b55881 100644 --- a/lib/utilities/server_helper.py +++ b/lib/utilities/server_helper.py @@ -30,25 +30,22 @@ def generate_thumbnail_for_job(job, thumb_video_path, thumb_image_path, max_widt pass # Determine best source file to use for thumbs - if job.status == RenderStatus.COMPLETED: # use finished file for thumb - source_path = job.file_list() - else: - source_path = [job.input_path] # use source if nothing else - - if source_path: + source_files = job.file_list() or [job.input_path] + if source_files: video_formats = ['.mp4', '.mov', '.avi', '.mpg', '.mpeg', '.mxf', '.m4v', 'mkv'] image_formats = ['.jpg', '.png', '.exr'] - is_image_file = any(ele in source_path[0] for ele in image_formats) - is_video_file = any(ele in source_path[0] for ele in video_formats) + image_files = [f for f in source_files if os.path.splitext(f)[-1].lower() in image_formats] + video_files = [f for f in source_files if os.path.splitext(f)[-1].lower() in video_formats] - if (is_image_file or is_video_file) and not os.path.exists(thumb_image_path): + if (video_files or image_files) and not os.path.exists(thumb_image_path): try: - logger.debug(f"Generating image thumbnail for {source_path[0]}") - save_first_frame(source_path=source_path[0], dest_path=thumb_image_path, max_width=max_width) + path_of_source = image_files[0] if image_files else video_files[0] + logger.debug(f"Generating image thumbnail for {path_of_source}") + save_first_frame(source_path=path_of_source, dest_path=thumb_image_path, max_width=max_width) except Exception as e: logger.error(f"Exception saving first frame: {e}") - if is_video_file and not os.path.exists(thumb_video_path): - x = threading.Thread(target=generate_thumb_thread, args=(source_path[0],)) + if video_files and not os.path.exists(thumb_video_path): + x = threading.Thread(target=generate_thumb_thread, args=(video_files[0],)) x.start()