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)
Authentication Options: -u, --username USERNAME Login with this account ID -p, --password PASSWORD Account password. If this option is left out, yt-dlp will ask interactively -2, --twofactor TWOFACTOR Two-factor authentication code -n, --netrc Use .netrc authentication data --netrc-location PATH Location of .netrc authentication data; either the path or its containing directory. Defaults to ~/.netrc --video-password PASSWORD Video password (vimeo, youku) --ap-mso MSO Adobe Pass multiple-system operator (TV provider) identifier, use --ap-list-mso for a list of available MSOs --ap-username USERNAME Multiple-system operator account login --ap-password PASSWORD Multiple-system operator account password. If this option is left out, yt-dlp will ask interactively --ap-list-mso List all supported multiple-system operators
==
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