yt-dlpでCookieエラーになったときの対処法

yt-dlpを使用して動画をダウンロードする時に、ブラウザのCookieエラーが出た際の対処方法を整理した。参考になれば幸いだ。

エラーメッセージ

Microsoft Windows [Version 10.0.19045.3570]
(c) Microsoft Corporation. All rights reserved.

C:\Users\<ユーザ名>>yt-dlp --cookies-from-browser brave -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" https://www.bilibili.com/video/XXXXXXXXXX/
Extracting cookies from brave
Traceback (most recent call last):
  File "yt_dlp\__main__.py", line 17, in <module>
  File "yt_dlp\__init__.py", line 1008, in main
  File "yt_dlp\__init__.py", line 962, in _real_main
  File "yt_dlp\YoutubeDL.py", line 678, in __init__
  File "yt_dlp\YoutubeDL.py", line 4084, in build_request_director
  File "functools.py", line 967, in __get__
  File "yt_dlp\YoutubeDL.py", line 4018, in cookiejar
  File "yt_dlp\cookies.py", line 91, in load_cookies
  File "yt_dlp\cookies.py", line 112, in extract_cookies_from_browser
  File "yt_dlp\cookies.py", line 281, in _extract_chrome_cookies
  File "yt_dlp\cookies.py", line 1042, in _open_database_copy
  File "shutil.py", line 418, in copy
  File "shutil.py", line 264, in copyfile
PermissionError: [Errno 13] Permission denied: 'C:\\Users\\<ユーザ名>\\AppData\\Local\\BraveSoftware\\Brave-Browser\\User Data\\Default\\Network\\Cookies'
[6552] Failed to execute script '__main__' due to unhandled exception!
'vd_source' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

エラー理由

ブラウザが起動している場合、ブラウザがCookiesファイルを専用アクセスモードで開いている。そのため、yt-dlpCookieにアクセスできず、エラーになる。

対処法

下記、3通りの対処方法があるが、本エントリーでは②と③を説明する。

① 動画ダウンロード時にブラウザを起動しない。
② ブラウザ起動時に、Cookiesファイルを専用アクセスモードで起動しないようにしておく。
③ あらかじめ、Cookieを.txtファイルで出力しておき、yt-dlp実行時には、出力したCookie.txtファイルを読み込ませるようにする。
(なお、2023/10/14時点では全て実行可能。)

②の対処方法

① ブラウザのショートカットを作成する。
② ショートカットー右クリックー「プロパティ」を選択
③ リンク先を下記のように変更する。
<変更前>
"C:\Program Files\BraveSoftware\Brave-Browser\Application\brave.exe"

<変更後>
"C:\Program Files\BraveSoftware\Brave-Browser\Application\brave.exe" --disable-features=LockProfileCookieDatabase
④ 起動しているブラウザをすべて閉じ、③で作成したショートカットからブラウザを起動した状態でyt-dlp実行。

③の対処方法

下記コマンドを実行する。
○コマンド
yt-dlp --cookies-from-browser brave --cookies cookies.txt
yt-dlp --cookies cookies.txt -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" [URL]

○コマンドの説明
一つ目のコマンドを入力し、Cookieを.txtファイルで出力しておく。
二つ目のコマンドで動画をダウンロード。[URL]はダウンロードしたい動画のURLに置き換える。
(例) yt-dlp --cookies cookies.txt -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" https://www.bilibili.com/video/XXXXXXXXXX/
※一つ目のコマンドは初回で一度実行しておけばよい。
次回以降、動画ダウンロード時は二つ目のコマンドのみ実行。

 

以上、終わり。

参考サイト