yt-dlpでダウンロードしたYouTube動画を視聴履歴に

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)
  1. プロファイルの確認のためにプロファイルマネージャの起動
  2. YouTube というプロファイルで起動
  3. Youtube の含まれているプロファイル名で起動
$ yt-dlp \
    --cookies-from-browser firefox:YouTube \ (1)
    --playlist-items 1 https://www.youtube.com/c/OSPNjp/videos (2)
  1. firefoxのYouTubeというプロファイルのcookieを利用
  2. 適当なYouTube URL

プロファイルが1つしかなかったり,デフォルトの場合はプロファイルを書く必要はありません.

うまくいけばyt-dlp終了後YouTubeの履歴を確認すると該当の動画が履歴に登録されているはずです.

ウェブブラウザからYouTubeのcookieを書き出して利用

--cookies-from-browser は便利ですが,リモートやヘッドレス環境だとGUIが必要になり面倒です.ウェブブラウザから該当ページのcookie をファイルに書き出し,--cookies オプションで利用します.

まず,YouTubeにログインしているウェブブラウザにcookieを書き出すための cookies.txt という拡張機能を導入します.

次にYouTubeのページを開いた状態で,拡張機能のアイコンをクリックして,「Current Site」を選び,cookieをファイルに保存します.

Fx cookies.txt

保存したcookieファイルを --cookies オプションに指定して実行します.

$ yt-dlp \
    --cookies ./YouTube-cookie.txt (1)
    --playlist-items 1 https://www.youtube.com/c/OSPNjp/videos (2)
  1. 保存したcookieファイルを指定
  2. 適当な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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です