]> jfr.im git - yt-dlp.git/commitdiff
Fix `%d` and empty default in outtmpl
authorpukkandan <redacted>
Wed, 9 Jun 2021 09:13:51 +0000 (14:43 +0530)
committerpukkandan <redacted>
Wed, 9 Jun 2021 10:07:15 +0000 (15:37 +0530)
Closes #388

test/test_YoutubeDL.py
test/test_utils.py
yt_dlp/YoutubeDL.py
yt_dlp/utils.py

index e77597d3c8f592b6a3be2f05d76d761fc72ab80f..0e1ab3a4a16efe3c046dc080ccc93c6fe6063d59 100644 (file)
@@ -735,6 +735,11 @@ def fname(templ):
             ydl = YoutubeDL(params)
             return ydl.prepare_filename(self.outtmpl_info)
 
+        self.assertEqual(fname('%(height)06d.%(ext)s'), '001080.mp4')
+        self.assertEqual(fname('%(foo|)s-%(bar|)s.%(ext)s'), '-.mp4')
+        # self.assertEqual(fname('%(foo|)s.%(ext)s'), '_.mp4')  # fixme
+        # self.assertEqual(fname('%(foo|)s'), '_')  # fixme
+
         self.assertEqual(fname('%%'), '%')
         self.assertEqual(fname('%%%%'), '%%')
         self.assertEqual(fname('%%(width)06d.%(ext)s'), '%(width)06d.mp4')
@@ -746,7 +751,7 @@ def fname(templ):
         self.assertEqual(fname('Hello %(title2)s'), 'Hello %PATH%')
 
         self.assertEqual(fname('%(title3)s'), 'foo_bar_test')
-        self.assertEqual(fname('%(formats.0)s'), "{'id' - 'id1'}")
+        self.assertEqual(fname('%(formats.0) 15s'), " {'id' - 'id1'}")
 
         self.assertEqual(fname('%(id)r %(height)r'), "'1234' 1080")
         self.assertEqual(fname('%(formats.0)r'), "{'id' - 'id1'}")
index 04d355b4fb930259c5be5855029e602601bcf45b..9ff13a369b00e8c6e1b4b9760db690ec99e247b9 100644 (file)
@@ -126,6 +126,7 @@ def test_timeconvert(self):
         self.assertTrue(timeconvert('bougrg') is None)
 
     def test_sanitize_filename(self):
+        self.assertEqual(sanitize_filename(''), '')
         self.assertEqual(sanitize_filename('abc'), 'abc')
         self.assertEqual(sanitize_filename('abc_d-e'), 'abc_d-e')
 
index ad96cebcd80ce5f3cbb624e4244cafaca376bc21..72fc9ad52dfe5d69eb4d73bbcbd65f51f9494cc9 100644 (file)
@@ -936,7 +936,8 @@ def create_key(outer_mobj):
                     # If value is an object, sanitize might convert it to a string
                     # So we convert it to repr first
                     value, fmt = repr(value), '%ss' % fmt[:-1]
-                value = sanitize(key, value)
+                if fmt[-1] in 'csr':
+                    value = sanitize(key, value)
             tmpl_dict[key] = value
             return '%({key}){fmt}'.format(key=key, fmt=fmt)
 
index 6737c1965e81b9d135f41a38cbf7c96921a2a772..96f41ddd4161f8b5d6c7b67048975994902fa187 100644 (file)
@@ -2107,6 +2107,8 @@ def replace_insane(char):
             return '_'
         return char
 
+    if s == '':
+        return ''
     # Handle timestamps
     s = re.sub(r'[0-9]+(?::[0-9]+)+', lambda m: m.group(0).replace(':', '_'), s)
     result = ''.join(map(replace_insane, s))