年齢制限付きの動画をyt-dlpでDLする方法

Python

普通にダウンロードしようとするとエラーが出る

年齢制限付きの動画を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