Quoting

在 youtube-dl 配置文件中設置標題的正確方法是什麼

  • December 30, 2020

我檢查了文件:

--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"

探勘程式碼(我還沒有根據經驗驗證),配置文件被解析,_readOptions其中呼叫以 POSIX 模式從 Python 標準庫compat_lex_split呼叫函式。shlex.split這是 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"

引用自:https://unix.stackexchange.com/questions/626605