From: Christian Heller Date: Thu, 9 Oct 2025 06:55:15 +0000 (+0200) Subject: On YoutubeDLError, at least update failed download's status. X-Git-Url: https://plomlompom.com/repos/%7B%7Bprefix%7D%7D/%22https:/validator.w3.org/pick_tasks?a=commitdiff_plain;p=ytplom On YoutubeDLError, at least update failed download's status. --- diff --git a/src/ytplom/misc.py b/src/ytplom/misc.py index 74c6239..4110138 100644 --- a/src/ytplom/misc.py +++ b/src/ytplom/misc.py @@ -18,6 +18,7 @@ from ffmpeg import probe as ffprobe # type: ignore import googleapiclient.discovery # type: ignore from mpv import MPV # type: ignore from yt_dlp import YoutubeDL # type: ignore +from yt_dlp.utils import YoutubeDLError # type: ignore # ourselves from ytplom.db import DbConn, DbData, Hash from ytplom.primitives import HandledException, NotFoundException @@ -951,12 +952,17 @@ class DownloadsManager: url = f'{YOUTUBE_URL_PREFIX}{video_id}' with YoutubeDL(YT_DL_PARAMS | {'progress_hooks': [hook]}) as ydl: self._update_status(video_id, 'preparing download') - info = ydl.sanitize_info(ydl.extract_info(url, download=False)) - for f in info['requested_formats']: - sizes[f[TOK_FO_ID]] = [False, 1] - if TOK_FS_AP in f: - sizes[f[TOK_FO_ID]] = [True, f[TOK_FS_AP]] - ydl.download(url) + try: + info = ydl.sanitize_info(ydl.extract_info(url, + download=False)) + for f in info['requested_formats']: + sizes[f[TOK_FO_ID]] = [False, 1] + if TOK_FS_AP in f: + sizes[f[TOK_FO_ID]] = [True, f[TOK_FS_AP]] + ydl.download(url) + except YoutubeDLError as e: + self._update_status(video_id, 'ERROR') + raise e self._sync_db() def start_thread(self) -> None: