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