From 32f2d412edf9462e0cac9390286187048b31517d Mon Sep 17 00:00:00 2001 From: dev Date: Fri, 15 May 2026 17:19:14 +0200 Subject: [PATCH] fix: subtitle embedding and MKV title not applied MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit postprocessor_args keys must be lowercase — cli_configuration_args does key.lower() for lookup but the dict is case-sensitive, so "ffmpeg_o" and "EmbedSubtitle+ffmpeg_o" never matched. Use "merger+ffmpeg_o" for title during merge, "embedsubtitle+ffmpeg_o" for title+disposition during embed. Co-Authored-By: Claude Sonnet 4.6 --- downloader.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/downloader.py b/downloader.py index 199aacd..83481cc 100644 --- a/downloader.py +++ b/downloader.py @@ -253,13 +253,14 @@ class DownloadManager: finished_once[0] = True self._set(dl_id, state="processing", progress=100) - ffmpeg_out = ["-metadata", f"title={mkv_title}"] + title_meta = ["-metadata", f"title={mkv_title}"] ydl_opts = { "outtmpl": f"{out_dir}/%(title)s.%(ext)s", "format": "bestvideo[vcodec^=avc1]+bestaudio/bestvideo+bestaudio/best", "merge_output_format": "mkv", - "postprocessor_args": {"ffmpeg_o": ffmpeg_out}, + # "merger+ffmpeg_o" sets title during video+audio merge + "postprocessor_args": {"merger+ffmpeg_o": title_meta}, "progress_hooks": [hook], "quiet": True, "no_warnings": True, @@ -270,8 +271,10 @@ class DownloadManager: "subtitleslangs": ["fr"], "embedsubtitles": True, }) - # Append disposition after title metadata - ffmpeg_out += ["-disposition:s:0", "default"] + # "embedsubtitle+ffmpeg_o" sets title + default disposition during subtitle embed + ydl_opts["postprocessor_args"]["embedsubtitle+ffmpeg_o"] = ( + title_meta + ["-disposition:s:0", "default"] + ) try: with yt_dlp.YoutubeDL(ydl_opts) as ydl: