ニコニコ動画で配信されているアニメをダウンロードする
use strict;
use warnings;
use File::Basename;
use File::Spec;
use LWP::UserAgent;
use URI;
use WWW::NicoVideo::Download;
use Web::Scraper;
use XML::Simple;
my $client = WWW::NicoVideo::Download->new(
email => '',
password => '',
);
my @url = (
'http://ch.nicovideo.jp/channel/ch60001', # シュタインズ・ゲート
'http://ch.nicovideo.jp/channel/ch60005', # 日常
'http://ch.nicovideo.jp/channel/ch60008', # 花咲くいろは
'http://ch.nicovideo.jp/channel/ch60009', # そふてにっ
'http://ch.nicovideo.jp/channel/ch60010', # アスタロッテのおもちゃ!
'http://ch.nicovideo.jp/channel/ch60011', # Dororonえん魔くん メ~ラめら
'http://ch.nicovideo.jp/channel/ch60012', # 変ゼミ
'http://ch.nicovideo.jp/channel/ch60014', # よんでますよ、アザゼルさん。
'http://ch.nicovideo.jp/channel/ch60015', # Aチャンネル
);
my $ua = LWP::UserAgent->new();
for my $url (@url) {
my $video = scraper {
process '.g-video-title .g-video-link', title => 'TEXT', url => '@href';
}->scrape(URI->new($url));
my ($video_id) = $video->{url} =~ m!/watch/(\w+)!;
my $res = $ua->get("http://ext.nicovideo.jp/api/getthumbinfo/$video_id");
my $ext = XMLin($res->content)->{thumb}{movie_type};
my $file = File::Spec->catfile(dirname(__FILE__), "$video->{title}.$ext");
next if -e $file;
warn "download $file\n";
open my $fh, '>', $file or die $!;
$client->download($video_id, sub {
my ($data, $res, $proto) = @_;
print {$fh} $data;
});
}