yt-dlpでTVerをダウンロードしようとしてエラーが出る、そんな時の対処法。
ただ一時的な対処法です。いずれ対応したものが出されるでしょうから。
あと個人的な備忘録です。一応。
yt-dlpでTVerをダウンロードしようとするとエラーになる
数日前からこの状態になりました。
ERROR: [brightcove:new] Unable to download JSON metadata: HTTP Error 404: Not Found (caused by <HTTPError 404: Not Found>)
JSON metadata のダウンロードでエラー発生。見つからないよと。
TVer側で仕様の変更があったようです。
どうやら新しく配信されるものからどんどん切り替えられている模様。
yt-dlpが更新されればと思っていたのですが、数日待って更新された「yt-dlp 2025.03.21」の extractor の中に TVer の修正版は含まれませんでした。
てことで、
fixされた tver.py を入手して対応します。
修正された tver.py を使う
手順を簡単に説明。
基本的な情報はこちら↓
[TVer] ERROR: [brightcove:new] Unable to download JSON metadata: HTTP Error 404: Not Found #12643
修正された tver.py を入手
上記ページのこのコメントから
こちらに移動したようです↓
https://gist.github.com/arabcoders/21162f44a99ba9ad96db28bc43fc83a0
上書きか、プラグインフォルダに入れるか
該当ファイルを上書きしてもよし。その場合は extractor フォルダを探して置き換えましょう。
今回はプラグインフォルダを作って放り込みました。
macなので場所はここ。
~/.config/yt-dlp/plugins/tver/yt_dlp_plugins/extractor
ちなみにwindowsは↓
C:\users\your_name\.config\yt-dlp\plugins\tver\yt_dlp_plugins\extractor
一つ一つフォルダを作っていくのは面倒なので、
階層ごといっぺんにフォルダを作成する。
mkdir -p ~/.config/yt-dlp/plugins/tver/yt_dlp_plugins/extractor
今回初めて知ったこのやり方(pオプション)。便利。
あとは入手した tver.py を放り込むだけです が、内部の記述が相対パスになっているのでこのままではエラーが出てしまう。
一部書き換える。
新しい修正版では書き換える必要がなくなりました。そのままファイル置き換えかプラグインフォルダに放り込むだけで動作します
from .common import InfoExtractor
from ..networking.exceptions import HTTPError
from ..utils import (
.
.
.
from ..utils.traversal import require, traverse_obj
↓
from yt_dlp.extractor.common import InfoExtractor
from yt_dlp.networking.exceptions import HTTPError
from yt_dlp.utils import (
.
.
.
from yt_dlp.utils.traversal import require, traverse_obj
リージョンロックがかかっているようなので
日本国内のIPアドレスからアクセスする必要があるらしいけど、まぁそこは問題ないので割愛。
修正されたtver.pyは従来のものと取得できるフォーマットリストが違う
「yt-dlp 2025.03.25」がリリースされました。
修正版のtver.pyも含まれています。(よかったよかった
でもちょっとファイルサイズが大きいような気がして・・・比較してみたらすこし違うみたい。
同じ720pでもビットレートが違うしファイルサイズも違う。
自分はちゃちゃっと観て消しちゃうのでそんな大きいサイズはいらない。
結局、ひとつ前のバージョンの tver.py をプラグインフォルダに入れて使用、
エラーが出るなら新しい方を使う形にしました。
古いドラマなんかはまだ取得できるんだよね、以前ので。時間の問題だろうけど。
まとめ
参照先の修正者さんに感謝。
おそらく数日から数週間で対応されるでしょうから、それまでの一時的な処置ですかね。
音声ファイルの詳細が取得できないようですが、そこはほぼ問題ないかと。
あとは普通に使えます。
ただ既に上がっていた、従来の方法で取得できる番組に関しては修正版tver.pyと従来のものとで取得できるリストが違います。
yt-dlp -F でまずはクオリティリストの取得を試みて、エラーが出たら新しいものを使う方が良いかもしれません。
これも短期的な話になると思いますが。
コメント