於 Linux 想要下載 YouTube 影片,可以使用 yt-dlp,但是若是非公開的影片,需要登入且新版需要啟用 JavaScript 才能通行,要怎麼做呢?
yt-dlp 啟用 JS 並 使用登入的 Cookie 下載影片
首先 yt-dlp 常常需要跟到最新版,不然會有問題:sudo yt-dlp -U
yt-dlp 搭配 Cookie 的其它參數可以參考此篇:yt-dlp 使用登入的 Cookie 來下載影片
在此主要是處理 JavaScript 的問題,可參考:EJS · yt-dlp/yt-dlp Wiki - External JS Scripts Setup Guide
我是使用 node.js 的版本
- apt install -y nodejs
- yt-dlp --js-runtimes node --remote-components ejs:github --cookies ./cookies.txt https://www.youtube.com/watch?v=XXXXXXXX
預設官方是用 Deno (尚未嘗試,先作紀錄)
- 安裝 Deno
- curl -fsSL https://deno.land/install.sh | sh
- echo 'export DENO_INSTALL="$HOME/.deno"' >> ~/.bashrc
- echo 'export PATH="DENO_INSTALL/bin:PATH"' >> ~/.bashrc
- source ~/.bashrc
- 更新 yt-dlp + 啟用遠端 EJS
- yt-dlp -U --remote-components ejs:github
- yt-dlp -v --remote-components ejs:github "https://www.youtube.com/watch?v=XXXXXXXX"
Cookies.txt 可使用下述 Extension: