]> jfr.im git - yt-dlp.git/commitdiff
[outtmpl] Handle hard-coded file extension better
authorpukkandan <redacted>
Tue, 1 Feb 2022 00:48:25 +0000 (06:18 +0530)
committerpukkandan <redacted>
Tue, 1 Feb 2022 00:56:01 +0000 (06:26 +0530)
When we know that the user-provided extension is the correct final one,
replace it with intermediate extension during download

yt_dlp/YoutubeDL.py

index 24843c7755b27360dd9720536e2189c8e6befcdd..e31edf50af14967b0661197591836681f08ebcb3 100644 (file)
@@ -1222,10 +1222,17 @@ def _prepare_filename(self, info_dict, tmpl_type='default'):
         try:
             outtmpl = self._outtmpl_expandpath(self.outtmpl_dict.get(tmpl_type, self.outtmpl_dict['default']))
             filename = self.evaluate_outtmpl(outtmpl, info_dict, True)
+            if not filename:
+                return None
 
-            force_ext = OUTTMPL_TYPES.get(tmpl_type)
-            if filename and force_ext is not None:
-                filename = replace_extension(filename, force_ext, info_dict.get('ext'))
+            if tmpl_type in ('default', 'temp'):
+                final_ext, ext = self.params.get('final_ext'), info_dict.get('ext')
+                if final_ext and ext and final_ext != ext and filename.endswith(f'.{final_ext}'):
+                    filename = replace_extension(filename, ext, final_ext)
+            else:
+                force_ext = OUTTMPL_TYPES[tmpl_type]
+                if force_ext:
+                    filename = replace_extension(filename, force_ext, info_dict.get('ext'))
 
             # https://github.com/blackjack4494/youtube-dlc/issues/85
             trim_file_name = self.params.get('trim_file_name', False)