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

コメントを残す

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

To respond on your own website, enter the URL of your response which should contain a link to this post's permalink URL. Your response will then appear (possibly after moderation) on this page. Want to update or remove your response? Update or delete your post and re-enter your post's URL again. (Find out more about Webmentions.)