From 8b98b8602d22181eb2a60d6f77faa81328f17713 Mon Sep 17 00:00:00 2001 From: 0xBLERKO <0xBLERKO@proton.me> Date: Fri, 6 Sep 2024 01:12:06 +0000 Subject: [PATCH] [BUGFIX] Find ext when info.json wrong youtube info.json sometimes say ext: mkv but download is not mkv. then ffmpeg fail because source file not exist. change ext property to find correct ext if info.json gives wrong ext. --- src/ytdl_sub/entries/entry.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/ytdl_sub/entries/entry.py b/src/ytdl_sub/entries/entry.py index 831bda6c..401afd49 100644 --- a/src/ytdl_sub/entries/entry.py +++ b/src/ytdl_sub/entries/entry.py @@ -109,12 +109,15 @@ class Entry(BaseEntry, Scriptable): @property def ext(self) -> str: """ - With ffmpeg installed, yt-dlp will sometimes merge the file into an mkv file. - This is not reflected in the entry. See if the mkv file exists and return "mkv" if so, - otherwise, return the original extension. + With ffmpeg installed, yt-dlp will sometimes merge the file into an mkv file or + info.json states mkv when it is not. This is not reflected in the entry. See + if the expected file exists and return it if so, otherwise, search for present ext. + Fall back to expected ext but this will fail. """ ext = self.try_get(v.ext, str) or self._kwargs[v.ext.metadata_key] - for possible_ext in [ext, "mkv"]: + for possible_ext in [ + ext, + ] + list(VIDEO_CODEC_EXTS): file_name = self.base_filename(ext=possible_ext) file_path = str(Path(self.working_directory()) / file_name) if os.path.isfile(file_path):