|
@@ -90,6 +90,7 @@ from .utils import (
|
|
|
encode_compat_str,
|
|
|
encodeFilename,
|
|
|
error_to_compat_str,
|
|
|
+ escapeHTML,
|
|
|
expand_path,
|
|
|
filter_dict,
|
|
|
float_or_none,
|
|
@@ -1046,7 +1047,7 @@ class YoutubeDL:
|
|
|
def validate_outtmpl(cls, outtmpl):
|
|
|
''' @return None or Exception object '''
|
|
|
outtmpl = re.sub(
|
|
|
- STR_FORMAT_RE_TMPL.format('[^)]*', '[ljqBUDS]'),
|
|
|
+ STR_FORMAT_RE_TMPL.format('[^)]*', '[ljhqBUDS]'),
|
|
|
lambda mobj: f'{mobj.group(0)[:-1]}s',
|
|
|
cls._outtmpl_expandpath(outtmpl))
|
|
|
try:
|
|
@@ -1089,7 +1090,7 @@ class YoutubeDL:
|
|
|
}
|
|
|
|
|
|
TMPL_DICT = {}
|
|
|
- EXTERNAL_FORMAT_RE = re.compile(STR_FORMAT_RE_TMPL.format('[^)]*', f'[{STR_FORMAT_TYPES}ljqBUDS]'))
|
|
|
+ EXTERNAL_FORMAT_RE = re.compile(STR_FORMAT_RE_TMPL.format('[^)]*', f'[{STR_FORMAT_TYPES}ljhqBUDS]'))
|
|
|
MATH_FUNCTIONS = {
|
|
|
'+': float.__add__,
|
|
|
'-': float.__sub__,
|
|
@@ -1198,6 +1199,8 @@ class YoutubeDL:
|
|
|
value, fmt = delim.join(map(str, variadic(value, allowed_types=(str, bytes)))), str_fmt
|
|
|
elif fmt[-1] == 'j': # json
|
|
|
value, fmt = json.dumps(value, default=_dumpjson_default, indent=4 if '#' in flags else None), str_fmt
|
|
|
+ elif fmt[-1] == 'h': # html
|
|
|
+ value, fmt = escapeHTML(value), str_fmt
|
|
|
elif fmt[-1] == 'q': # quoted
|
|
|
value = map(str, variadic(value) if '#' in flags else [value])
|
|
|
value, fmt = ' '.join(map(compat_shlex_quote, value)), str_fmt
|