WWW::YouTube::Download 0.27にパッチを当てた。
WWW::YouTube::Download 0.27 がなぜか最近、よくこけるようになったので、ちょっと調べた。
どうやらyoutubeのhtmlが変わったので、このモジュールの内部で使っている正規表現が
マッチしなくなっちゃったのが原因くさい。
ので、その箇所にパッチを当てるプログラムを書いた。
use WWW::YouTube::Download;
しているプログラム(plなりpmなり)の内部で、このコードをコピペすれば動くようになります。
少なくとも、get_title、get_video_url、get_fmtの動作は確認しました。
#------------------------------------------------------------ #モジュールの内部メソッドを外部から書き換える。 &_fixup(); sub _fixup{ return if WWW::YouTube::Download->VERSION > 0.27; package WWW::YouTube::Download; no warnings 'redefine'; *_get_args = sub { my ($self, $content) = @_; my $data; if ($content =~ /'PLAYER_CONFIG': ({.*?)}\);/s) { $data = JSON->new->utf8(1)->decode($1); } return $data->{args}; }; *WWW::YouTube::Download::_get_args = \&_get_args; return 1; } #------------------------------------------------------------
こういうのって、作者様にパッチ送れれば最高なんですけども、どうしたら良いんですかね?
ツイッターやってないかなあ?
ディスカッション
コメント一覧
ありがとうございます。このパッチを当てたら数日は動いてたのですが、またダウンロードできなくなっていました。何が原因でしょうか
ご利用ありがとうございます。
私の作ったサービスもなんかここんところ調子悪いなーと思ったら、
モジュールが原因だったか・・・(ちゃんと見ろってつっ込みはなしで;)
どうもまたyoutubeのjsonが変わったのが原因みたいです。
中見てまたblogにパッチをあげたいと思います。
ご報告感謝。
ライアンさま
モジュール本体に修正が入ったようです。
http://search.cpan.org/~xaicron/WWW-YouTube-Download-0.30/lib/WWW/YouTube/Download.pm
こちらをご利用ください。
この書き込みをした時点では更新後のモジュールで問題なく動作しております。
ではでは。
You are most likely installing a new.version of YouTube Downloader in the same location as your older.version. The installer is designed for this to work properly and.automatically close any running instances of YouTube Downloader before.installing the new version.
thanks.
英語で新しいバージョン突っ込めばおkと外国人さんが教えてくれているっぽいね。
また数日前からダウンロード出来なくなってますね;;
生禿様、1週間くらい前からまたダウンロードできなくなってます;;
どうしたら良いのでしょうか?;;