yt-dlpで動画をダウンロードすると既定値では視聴履歴に残りません.視聴履歴を残すようにしてみました.
yt-dlp -h
を見ると以下のあたりで実現できそうです.
--cookies FILE Netscape formatted file to read cookies from and dump cookie jar in --no-cookies Do not read/dump cookies from/to file (default) --cookies-from-browser BROWSER[+KEYRING][:PROFILE] The name of the browser and (optionally) the name/path of the profile to load cookies from, separated by a ":". Currently supported browsers are: brave, chrome, chromium, edge, firefox, opera, safari, vivaldi. By default, the most recently accessed profile is used. The keyring used for decrypting Chromium cookies on Linux can be (optionally) specified after the browser name separated by a "+". Currently supported keyrings are: basictext, gnomekeyring, kwallet --no-cookies-from-browser Do not load cookies from browser (default)
YouTubeにログイン済のブラウザのcookie情報を利用
--cookies-from-browser
を利用してYouTubeにログイン済のウェブブラウザのcookie情報からYouTubeに閲覧情報を残します.ローカルPCで使う場合に便利です.
対応ウェブブラウザは,brave, chrome, chromium, edge, firefox, opera, safari, vivaldi となっています.
複数プロファイルを利用している場合でも引数で指定可能です.
今回はFirefoxでYouTubeというプロファイルで試します.
Note
|
$ firefox --ProfileManager (1) $ firefox -P YouTube (2) $ firefox --profile ~/.mozilla/firefox/$( grep YouTube ~/.mozilla/firefox/installs.ini | cut -f2 -d= )/ (3)
|
$ yt-dlp \ --cookies-from-browser firefox:YouTube \ (1) --playlist-items 1 https://www.youtube.com/c/OSPNjp/videos (2)
- firefoxのYouTubeというプロファイルのcookieを利用
- 適当なYouTube URL
プロファイルが1つしかなかったり,デフォルトの場合はプロファイルを書く必要はありません.
うまくいけばyt-dlp終了後YouTubeの履歴を確認すると該当の動画が履歴に登録されているはずです.
ウェブブラウザからYouTubeのcookieを書き出して利用
--cookies-from-browser
は便利ですが,リモートやヘッドレス環境だとGUIが必要になり面倒です.ウェブブラウザから該当ページのcookie をファイルに書き出し,--cookies
オプションで利用します.
まず,YouTubeにログインしているウェブブラウザにcookieを書き出すための cookies.txt という拡張機能を導入します.
次にYouTubeのページを開いた状態で,拡張機能のアイコンをクリックして,「Current Site」を選び,cookieをファイルに保存します.
保存したcookieファイルを --cookies
オプションに指定して実行します.
$ yt-dlp \ --cookies ./YouTube-cookie.txt (1) --playlist-items 1 https://www.youtube.com/c/OSPNjp/videos (2)
- 保存したcookieファイルを指定
- 適当なYouTube URL
うまくいけばyt-dlp終了後YouTubeの履歴を確認すると該当の動画が履歴に登録されているはずです.
cookieファイルを持っていけば別の端末でも利用可能です.セッションが切れたらcookieファイルは再度作成する必要があると思います.
ユーザ名,パスワードをnetrcファイルに書いて認証(失敗)
netrcファイルにYouTubeのユーザ名,パスワード(2要素認証を有効にしているのでアプリケーションパスワードを生成)を登録してみましたが,この手順だと認証エラーになりうまく行きませんでした.
恐らくreCAPTCHAで引っかかっているのではないかと思います.
お手軽なんですが残念.
環境
$ yt-dlp --version 2022.03.08.1 $ dpkg-query -W firefox-esr ffmpeg ffmpeg 7:4.3.3-0+deb11u1 firefox-esr 78.15.0esr-1~deb11u1 $ lsb_release -dr Description: Debian GNU/Linux 11 (bullseye) Release: 11 $ arch x86_64