跳至內容
yt-dlp

X(Twitter)的 yt-dlp 指令產生器

為 X 上的影片產生 yt-dlp 指令,檔名可預測,並帶上敏感內容所需的選項。

選填。留空的話指令會以 URL 結尾,由你自己填。

你的指令

yt-dlp --merge-output-format mp4 --no-playlist -o '%(uploader_id)s - %(id)s.%(ext)s' https://x.com/user/status/1234567890
基本

僅音訊會擷取聲音軌並捨棄影像串流。

影片與畫質

限制高度上限。yt-dlp 仍會挑該上限以下最好的一路串流。

把分離的影像與音訊串流合併進去的檔案類型。

進階選項(3)

會取代畫質下拉選單。給已經熟悉 format 語法的人用。

不重新編碼,只重新封裝。快而且無損。

重新編碼影片。慢而且有損 —— 只在 remux 行不通時才用。

音訊

音訊要轉換成的檔案類型。

VBR 的檔案大小與品質之比最好;固定 bitrate 比較好預估大小。

字幕

內嵌會把字幕放進影片裡;另存則在旁邊寫一個獨立的 .srt 檔。

用逗號分隔。想要所有可用語言就寫 all。

播放清單與頻道

當網址同時屬於一支影片和一份播放清單時該怎麼做。

範圍與清單都可以,例如 1-10,15,或用 -5::2 表示從尾端起每隔一項取一項。

進階選項(1)

記下已經下載過的項目,於是重新執行會跳過它們。這就是讓一個頻道保持同步的做法。

片段與章節
進階選項(2)

像 *00:01:30-00:03:00 這樣的時間範圍,或章節名稱。開頭的星號表示這是時間點。

中繼資料與封面
進階選項(3)
SponsorBlock

依 SponsorBlock 資料,把社群標記的片段直接從檔案裡剪掉。

進階選項(1)

片段保留,但會被標出來,讓你自己跳過。

檔案與資料夾

欄位名稱寫在 %(...)s 裡。斜線會建立資料夾。

進階選項(4)

檔案要寫到哪裡。搭配上面的範本可以產生子資料夾。

檔名最大長度,以字元計。

篩選
進階選項(5)

YYYYMMDD,或像 now-1month 這樣的相對日期。

YYYYMMDD,或相對日期。

跳過更小的檔案。可以寫 5M、500K 之類。

跳過更大的檔案。

停下來之前要下載的檔案數量。

網路

例如 2M 或 500K。當你需要把剩下的頻寬留給別的事情時很有用。

進階選項(5)

能加快分片串流的下載。從 4 開始比較合適。

失敗的片段要重試幾次。也可以寫 infinite。

HTTP、HTTPS 或 SOCKS proxy 的網址。

讓請求看起來來自真正的瀏覽器。突然出現 403 時,這是最常見的解法。

登入與 cookies

直接讀取你的登入工作階段。私人、年齡限制或會員專屬內容都需要它。

進階選項(1)

從瀏覽器匯出的 Netscape 格式 cookies.txt。

直播
進階選項(2)

反覆檢查直到預定的直播開始。MIN-MAX 是兩次檢查之間的秒數。

疑難排解
進階選項(3)

已淘汰,應改用 --add-headers。之所以保留,是因為很多舊教學還在用它。

已淘汰,應改用 --add-headers。

依網站區分的專用選項,例如 youtube:player_client=web。

輸出與除錯
進階選項(2)
重設

X 注意事項

x.com 與 twitter.com 的網址都可以用。大家在 X 上叫作 GIF 的其實是短 MP4 影片,所以它們和一般影片一樣下載;真的需要 GIF 就事後再轉。

敏感內容的貼文需要開啟了相應設定的登入工作階段。預設範本用作者與貼文 id 命名檔案,這樣即使一個資料夾裡放滿這類檔案也還翻得動。

X 已多次改換它的 API 表面,實際後果是 extractor 修復會在幾天內隨 yt-dlp 更新送達——「X 壞了」的報告大多出自幾週以上的舊安裝。先更新再排查:yt-dlp -U。訪客存取時有時無;被收回時,帶 cookies 的登入工作階段就是能走的路,也是到敏感內容的唯一一條路。

討論串與引用貼文是網址最容易搞混的地方。帶影片的推文把影片嵌在裡面;同一支影片出現在個人頁面媒體分頁上則是另一個項目。要抓整個帳號,媒體分頁的網址會分頁取走所有帶媒體的貼文;封存檔案加上出錯繼續,則能處理活躍帳號必然累積的已刪貼文。搜尋網址的下載在這裡被有意排除:結果會在請求間漂移,對一條會移動的搜尋做封存毫無意義。

X 大多數情況下以 HLS 分片加 MP4 後備的方式提供影片,所以合併很常見,ffmpeg 是第一個該檢查的相依。 「GIF」 貼文是值得知道的例外:它們和其他內容一樣以 MP4 到手,之後轉成真正的 GIF 是 ffmpeg 的活,不是 yt-dlp 的活——而一個能循環的 WebM 往往更接近傳送者的本意。

年齡限制和敏感貼文是硬牆:設定在帳號裡,不在指令裡。在瀏覽器裡登入一次、打開敏感內容設定、交出 cookies,就能用了——不存在繞開 cookies 的辦法,因為 X 在伺服器端驗證工作階段。已刪貼文和別處一樣:沒了就是沒了,從前保存鏡像的站幾年前就關閉了。

常見問題

X 上年齡限制的貼文為什麼會失敗?
敏感內容需要一個登入工作階段。用 --cookies-from-browser,並使用已開啟該設定的帳號。
怎麼從 X 下載 GIF?
它們是 MP4 影片而不是 GIF,和其他影片一樣下載。真的需要 GIF 就事後再轉。
在 X 上可以選影片畫質嗎?
可以。X 會提供多個版本;用畫質下拉選單限制高度,或先用 -F 列出來看。