From feec6740d14eacfc10e92e10a71013c896ea5ec1 Mon Sep 17 00:00:00 2001 From: Aevann Date: Sun, 23 Jul 2023 18:14:06 +0300 Subject: [PATCH] catch ffmpeg timeout for making poster --- files/routes/posts.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/files/routes/posts.py b/files/routes/posts.py index 76274d3716..5dae67694b 100644 --- a/files/routes/posts.py +++ b/files/routes/posts.py @@ -649,14 +649,18 @@ def submit_post(v:User, sub=None): elif file.content_type.startswith('video/'): p.url = process_video(file, v) name = f'/images/{time.time()}'.replace('.','') + '.webp' - subprocess.run(['ffmpeg', '-y', '-loglevel', 'warning', - '-i', p.url, '-vf', "scale='iw':-2", - '-q:v', '3', '-frames:v', '1', name], check=True, timeout=SUBPROCESS_TIMEOUT_DURATION) - p.posterurl = name - - name2 = name.replace('.webp', 'r.webp') - copyfile(name, name2) - p.thumburl = process_image(name2, v, resize=99) + try: + subprocess.run(['ffmpeg', '-y', '-loglevel', 'warning', + '-i', p.url, '-vf', "scale='iw':-2", + '-q:v', '3', '-frames:v', '1', name], check=True, timeout=SUBPROCESS_TIMEOUT_DURATION) + except: + if os.path.isfile(name): + os.remove(name) + else: + p.posterurl = name + name2 = name.replace('.webp', 'r.webp') + copyfile(name, name2) + p.thumburl = process_image(name2, v, resize=99) elif file.content_type.startswith('audio/'): p.url = process_audio(file, v) else: