YouTube動画ダウンロード時の「Unable to extract video data」エラーの解決方法
問題の概要
Pythonでyoutube_dl
モジュールを使用してYouTube動画をダウンロードしようとすると、以下のエラーが発生することがあります:
ERROR: YouTube said: Unable to extract video data
このエラーは、YouTubeのWebサイト構造が変更された際に、youtube_dl
が動画情報を正しく抽出できない場合に発生します。特に、古いバージョンのyoutube_dl
を使用している場合によく見られます。
主な解決策
方法1: youtube-dlの更新(推奨)
最も効果的な解決策は、youtube-dl
を最新バージョンに更新することです。YouTubeは定期的にサイト構造を変更するため、ツール側も対応した最新版を使用する必要があります。
# pipを使用して更新
pip install -U youtube-dl
# または特定のユーザーにのみインストール
pip install --user -U youtube-dl
brew upgrade youtube-dl
choco upgrade youtube-dl
youtube-dl --update
方法2: yt-dlpへの移行(最適な解決策)
youtube-dl
の積極的にメンテナンスされているフォークであるyt-dlp
を使用することを強くお勧めします。このプロジェクトはより頻繁に更新され、多くの新機能や修正が含まれています。
# yt-dlpのインストール
pip install -U yt-dlp
# 使用例
yt-dlp https://www.youtube.com/watch?v=動画ID -o ~/Videos/出力ファイル名.mp4
TIP
yt-dlp
はyoutube-dl
と完全な互換性があり、同じオプションと構文をサポートしています。既存のスクリプトを変更せずにそのまま使用できます。
方法3: Ubuntu/Debianユーザー向けの解決策
パッケージマネージャー経由でインストールした場合、リポジトリのバージョンが古い可能性があります。以下の手順で再インストールしてください。
# 既存のyoutube-dlを削除
sudo apt purge youtube-dl
# 最新の.debパッケージをダウンロードしてインストール
wget http://ftp.de.debian.org/debian/pool/main/y/youtube-dl/youtube-dl_最新バージョン_all.deb
sudo apt install ./youtube-dl_最新バージョン_all.deb
方法4: Python実行環境の確認
youtube-dl
が正しいPythonバージョンで実行されているかを確認してください。
# シンボリックリンクの修正(必要な場合)
sudo sed -i '1s/python/python3/' /usr/local/bin/youtube-dl
方法5: クッキーファイルの使用(年齢制限動画用)
年齢制限がかかっている動画の場合、ログイン情報を含むクッキーファイルが必要なことがあります。
# クッキーファイルを使用したダウンロード
youtube-dl --cookies /path/to/cookies.txt https://www.youtube.com/watch?v=動画ID
INFO
クッキーファイルは、Chrome拡張機能の「Cookie.txt」などでエクスポートできます。
コード例の修正
元のPythonコードを修正して、エラーハンドリングを改善した例:
import yt_dlp as youtube_dl # yt-dlpを使用
ydl_opt = {
"outtmpl": "/videos/%(title)s.%(ext)s",
"format": "bestaudio/best",
# エラー時のリトライ設定
"retries": 10,
"fragment_retries": 10,
}
def operation(link):
"""
ダウンロード操作を開始
"""
try:
with youtube_dl.YoutubeDL(ydl_opt) as yd:
video = yd.download([link])
result.set("動画のダウンロードが完了しました!")
except Exception as e:
print(f"エラーが発生しました: {str(e)}")
result.set("エラーが発生しました。詳細はコンソールを確認してください。")
operation("https://youtube.com/watch?v=...")
まとめ
「Unable to extract video data」エラーは、主に以下の方法で解決できます:
- youtube-dlの最新版への更新
- yt-dlpへの移行(推奨)
- 正しいインストール方法の確認
- 年齢制限動画への対処
特にyt-dlp
は活発に開発が続けられており、YouTubeの変更にも迅速に対応しているため、長期的な解決策として最も信頼性が高い選択肢です。
WARNING
YouTubeの利用規約に違反するような大量ダウンロードや商業目的での使用は避け、個人利用の範囲内で適切にツールを使用してください。