|
|
|
@ -722,7 +722,7 @@ class TestYoutubeDL(unittest.TestCase):
|
|
|
|
|
test('%(id)s', '-abcd', info={'id': '-abcd'})
|
|
|
|
|
test('%(id)s', '.abcd', info={'id': '.abcd'})
|
|
|
|
|
test('%(id)s', 'ab__cd', info={'id': 'ab__cd'})
|
|
|
|
|
test('%(id)s', ('ab:cd', 'ab -cd'), info={'id': 'ab:cd'})
|
|
|
|
|
test('%(id)s', ('ab:cd', 'ab:cd'), info={'id': 'ab:cd'})
|
|
|
|
|
test('%(id.0)s', '-', info={'id': '--'})
|
|
|
|
|
|
|
|
|
|
# Invalid templates
|
|
|
|
@ -770,7 +770,7 @@ class TestYoutubeDL(unittest.TestCase):
|
|
|
|
|
test('a%(width|)d', 'a', outtmpl_na_placeholder='none')
|
|
|
|
|
|
|
|
|
|
FORMATS = self.outtmpl_info['formats']
|
|
|
|
|
sanitize = lambda x: x.replace(':', ' -').replace('"', "'").replace('\n', ' ')
|
|
|
|
|
sanitize = lambda x: x.replace(':', ':').replace('"', """).replace('\n', ' ')
|
|
|
|
|
|
|
|
|
|
# Custom type casting
|
|
|
|
|
test('%(formats.:.id)l', 'id 1, id 2, id 3')
|
|
|
|
@ -788,13 +788,13 @@ class TestYoutubeDL(unittest.TestCase):
|
|
|
|
|
test('%(filesize)#D', '1Ki')
|
|
|
|
|
test('%(height)5.2D', ' 1.08k')
|
|
|
|
|
test('%(title4)#S', 'foo_bar_test')
|
|
|
|
|
test('%(title4).10S', ('foo \'bar\' ', 'foo \'bar\'' + ('#' if compat_os_name == 'nt' else ' ')))
|
|
|
|
|
test('%(title4).10S', ('foo "bar" ', 'foo "bar"' + ('#' if compat_os_name == 'nt' else ' ')))
|
|
|
|
|
if compat_os_name == 'nt':
|
|
|
|
|
test('%(title4)q', ('"foo \\"bar\\" test"', "'foo _'bar_' test'"))
|
|
|
|
|
test('%(formats.:.id)#q', ('"id 1" "id 2" "id 3"', "'id 1' 'id 2' 'id 3'"))
|
|
|
|
|
test('%(formats.0.id)#q', ('"id 1"', "'id 1'"))
|
|
|
|
|
test('%(title4)q', ('"foo \\"bar\\" test"', ""foo ⧹"bar⧹" test""))
|
|
|
|
|
test('%(formats.:.id)#q', ('"id 1" "id 2" "id 3"', '"id 1" "id 2" "id 3"'))
|
|
|
|
|
test('%(formats.0.id)#q', ('"id 1"', '"id 1"'))
|
|
|
|
|
else:
|
|
|
|
|
test('%(title4)q', ('\'foo "bar" test\'', "'foo 'bar' test'"))
|
|
|
|
|
test('%(title4)q', ('\'foo "bar" test\'', '\'foo "bar" test\''))
|
|
|
|
|
test('%(formats.:.id)#q', "'id 1' 'id 2' 'id 3'")
|
|
|
|
|
test('%(formats.0.id)#q', "'id 1'")
|
|
|
|
|
|
|
|
|
@ -852,8 +852,8 @@ class TestYoutubeDL(unittest.TestCase):
|
|
|
|
|
# Path expansion and escaping
|
|
|
|
|
test('Hello %(title1)s', 'Hello $PATH')
|
|
|
|
|
test('Hello %(title2)s', 'Hello %PATH%')
|
|
|
|
|
test('%(title3)s', ('foo/bar\\test', 'foo_bar_test'))
|
|
|
|
|
test('folder/%(title3)s', ('folder/foo/bar\\test', 'folder%sfoo_bar_test' % os.path.sep))
|
|
|
|
|
test('%(title3)s', ('foo/bar\\test', 'foo⧸bar⧹test'))
|
|
|
|
|
test('folder/%(title3)s', ('folder/foo/bar\\test', 'folder%sfoo⧸bar⧹test' % os.path.sep))
|
|
|
|
|
|
|
|
|
|
def test_format_note(self):
|
|
|
|
|
ydl = YoutubeDL()
|
|
|
|
|