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