[YoutubeDL] Don't expand env variables in meta fields (closes #13637)
This commit is contained in:
parent
9a0942ad55
commit
15da37c7dc
2 changed files with 20 additions and 1 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue