我检查了文档:
--add-header FIELD:VALUE Specify a custom HTTP header and its value,
separated by a colon ':'. You can use this
option multiple times
然而,我不清楚,可能也不会还有其他一些人。
所以,我在他们的网站上问了这个问题支持页面。充其量这个答案对我来说是模棱两可的。然而,提示是:
阅读 shell 上的常见问题解答。
那么,在文件中设置标题的正确方法是什么youtube-dl.conf
:
--add-header Accept-Encoding:"identity;q=1, *;q=0"
或者,
--add-header 'Accept-Encoding: identity;q=1, *;q=0'
或者,
--add-header "Accept-Encoding: identity;q=1, *;q=0"
答案1
深入研究代码(我没有凭经验验证),配置文件被解析为_readOptions
哪个调用compat_lex_split
它调用该函数shlex.split
来自 POSIX 模式下的 Python 标准库。这是 shell 引用的近似值(并且有足够的差异,阅读 shell 的文档会产生误导)。简而言之,规则是:
- 不加引号的注释
#
开始一条注释,该注释一直运行到该行末尾。 - 未加引号的空格分隔单词。
- 反斜杠引用下一个字符:反斜杠+字符代表第二个字符。
- 在单引号内
'…'
,所有字符均按字面意思理解。 - 在双引号内
"…"
,仅当反斜杠或双引号是反斜杠或双引号时,反斜杠才会引用下一个字符,其他所有内容均按字面意思理解。
这里有些例子:
foo '' bar
→foo
、空词、栏foo#bar
→foo
"foo bar"baz
→foo barbaz
"\f\\"
→\f\
'\f\\'
→\f\\
\f\\
→f\
并且以下所有内容都是等效的:
--add-header Accept-Encoding:"identity;q=1, *;q=0"
--add-header Accept-Encoding:'identity;q=1, *;q=0'
--add-header Accept-Encoding:identity;q=1,\ *;q=0
--add-header 'Accept-Encoding: identity;q=1, *;q=0'
--add-header "Accept-Encoding: identity;q=1, *;q=0"