年齢制限付きの動画をyt-dlpでDLする方法
普通にダウンロードしようとするとエラーが出る
年齢制限付きの動画をDLしようとすると
raise DownloadError(message, exc_info)yt_dlp.utils.DownloadError: ERROR: [youtube] FvLXx3ujNmk: Sign in to confirm your age. This video may be inappropriate for some users.などのエラーが発生します。
Cookieを使うとログインできる
年齢制限付きの動画をダウンロードするためにはCookieを使ってログインする必要があります。
まず、GoogleChromeの拡張機能「Get cookies.txt LOCALLY」をChromeにインストールしてください。
その後、年齢制限の付いたYouTubeの動画をChromeで開きます。
動画ページでGet cookies.txt LOCALLYのアイコンをクリックし、「Export」ボタンをクリックします。
Netscape形式のtxtファイルがダウンロードフォルダにダウンロードされます。
ーーーーー
※補足:GoogleChromeの拡張機能「EditThisCookie」でも同じことができますが、ファイルをJSON形式でしかエクスポートできません。yt_dlpはJSON形式で書かれたcookie.txtを受け付けないのでエラーが発生します。Netscape形式のtxtファイルを作りましょう。
ーーーーー
FireFoxのダウンロード
FireFoxをダウンロードして、FireFoxでYouTubeにログインします。
その後、yt-dlpで落としたい動画にアクセスしておきます。
※Chrome系のブラウザ(Google ChromeやBrave等)とyt-dlpを組み合わせると次のエラーが出てしまいます。
WARNING: [youtube+AGB] Unable to download JSON metadata: HTTP Error 502: Bad Gateway
ERROR: [youtube+AGB] [videoID]: Sign in to confirm your age. This video may be inappropriate for some users.Cookieを読み込むことはできますが、暗号化されたCookieを復号することができないため、エラーが発生します。
そのため、Google Chromeではなく、FireFoxを使う必要があります。
PowerShellでコマンドを実行する
txtファイルのパスをコピーして、PowerShellやコマンドプロンプトで次のコマンドを実行します。
yt-dlp 'youtubeのURL' --cookies 'C:\Users\bb\Downloads\e57fe091-e346-4d7b-8fe3-4e73bc4fffd0.txt'※ PowerShellでは二重引用符の中の \ が解釈されにくいので、単一引用符 ‘ ‘ で囲むほうが安全です。
Cookieのセッション切れ
Cookieは使える有効期限があります。
Cookieのセッションが切れた場合は動画をダウンロードできなくなるので、もう一度、txtファイルを取得する必要があります。
Pythonファイルからダウンロードする場合
クッキーをcookie.txtという名前で保存した後、yt_dlpにクッキーを渡します。
option = {
'cookies': 'C:/path/xxxx', // 保存したクッキーのパス
}参考
【https://www.nyanmo.info/posts/yt-dlp/bypassagegate/】
BACK