在 youtube-dl 配置文件中设置标头的正确方法是什么

在 youtube-dl 配置文件中设置标头的正确方法是什么

我检查了文档:

--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 '' barfoo、空词、栏
  • foo#barfoo
  • "foo bar"bazfoo 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"

相关内容