Sergey M․
7 years ago
No known key found for this signature in database
GPG Key ID: 2C393E0F18A9236D
2 changed files with
20 additions and
1 deletions
-
test/test_YoutubeDL.py
-
youtube_dl/YoutubeDL.py
|
|
@ -527,6 +527,8 @@ class TestYoutubeDL(unittest.TestCase): |
|
|
|
'ext': 'mp4', |
|
|
|
'width': None, |
|
|
|
'height': 1080, |
|
|
|
'title1': '$PATH', |
|
|
|
'title2': '%PATH%', |
|
|
|
} |
|
|
|
|
|
|
|
def fname(templ): |
|
|
@ -545,10 +547,14 @@ class TestYoutubeDL(unittest.TestCase): |
|
|
|
self.assertEqual(fname('%(height)0 6d.%(ext)s'), ' 01080.mp4') |
|
|
|
self.assertEqual(fname('%(height)0 6d.%(ext)s'), ' 01080.mp4') |
|
|
|
self.assertEqual(fname('%(height) 0 6d.%(ext)s'), ' 01080.mp4') |
|
|
|
self.assertEqual(fname('%%'), '%') |
|
|
|
self.assertEqual(fname('%%%%'), '%%') |
|
|
|
self.assertEqual(fname('%%(height)06d.%(ext)s'), '%(height)06d.mp4') |
|
|
|
self.assertEqual(fname('%(width)06d.%(ext)s'), 'NA.mp4') |
|
|
|
self.assertEqual(fname('%(width)06d.%%(ext)s'), 'NA.%(ext)s') |
|
|
|
self.assertEqual(fname('%%(width)06d.%(ext)s'), '%(width)06d.mp4') |
|
|
|
self.assertEqual(fname('Hello %(title1)s'), 'Hello $PATH') |
|
|
|
self.assertEqual(fname('Hello %(title2)s'), 'Hello %PATH%') |
|
|
|
|
|
|
|
def test_format_note(self): |
|
|
|
ydl = YoutubeDL() |
|
|
|
|
|
@ -20,6 +20,7 @@ import re |
|
|
|
import shutil |
|
|
|
import subprocess |
|
|
|
import socket |
|
|
|
import string |
|
|
|
import sys |
|
|
|
import time |
|
|
|
import tokenize |
|
|
@ -674,7 +675,19 @@ class YoutubeDL(object): |
|
|
|
FORMAT_RE.format(numeric_field), |
|
|
|
r'%({0})s'.format(numeric_field), outtmpl) |
|
|
|
|
|
|
|
filename = expand_path(outtmpl % template_dict) |
|
|
|
# expand_path translates '%%' into '%' and '$$' into '$' |
|
|
|
# correspondingly that is not what we want since we need to keep |
|
|
|
# '%%' intact for template dict substitution step. Working around |
|
|
|
# with boundary-alike separator hack. |
|
|
|
sep = ''.join([random.choice(string.ascii_letters) for _ in range(32)]) |
|
|
|
outtmpl = outtmpl.replace('%%', '%{0}%'.format(sep)).replace('$$', '${0}$'.format(sep)) |
|
|
|
|
|
|
|
# outtmpl should be expand_path'ed before template dict substitution |
|
|
|
# because meta fields may contain env variables we don't want to |
|
|
|
# be expanded. For example, for outtmpl "%(title)s.%(ext)s" and |
|
|
|
# title "Hello $PATH", we don't want `$PATH` to be expanded. |
|
|
|
filename = expand_path(outtmpl).replace(sep, '') % template_dict |
|
|
|
|
|
|
|
# Temporary fix for #4787 |
|
|
|
# 'Treat' all problem characters by passing filename through preferredencoding |
|
|
|
# to workaround encoding issues with subprocess on python2 @ Windows |
|
|
|