ニコニコflv&コメント取得
スーパーpre記法テストです。うおおおおめっちゃ綺麗にソース貼れるね。すげえな。
えーとこれはYusuke WadaさんのPerlスクリプトをいじくったニコニコの動画flv&コメント取得スクリプトです。卒論で必要になったので探したんだけど動かなかったのでいじくりました。これでSSL認証でも頑張れます。WWW::MechanizeとCrypt::SSLeayというモジュールが必要です。
#!C:/Perl/bin/perl use strict; use LWP::UserAgent; use HTTP::Cookies; use URI::Escape; use HTTP::Request; use HTTP::Headers; use WWW::Mechanize; my $video_id = "sm000000"; my $mail = 'メールアドレス'; my $password = 'パスワード'; my $mech = new WWW::Mechanize( autocheck => 1 ); &login(); $mech->get("http://www.nicovideo.jp/watch/$video_id"); my $res = $mech->get("http://www.nicovideo.jp/api/getflv?v=$video_id"); my $content = uri_unescape($res->content); my %data; my @temp = split("&",$content); foreach my $prop (@temp){ if($prop =~ /(.*?)=(.*)/){ $data{$1} = $2; } } #save flv $res = $mech->get( $data{url} ); &save($res->content, $video_id . ".flv"); #save xml my $post_data = "<thread res_from=\"-500\" version=\"20061206\" thread=\"" . $data{thread_id} ."\" />"; my $header = HTTP::Headers->new; $header->header('Content-Type' => 'text/xml'); my $req = HTTP::Request->new('POST', $data{ms}, $header, $post_data ); $res = $mech->request($req); &save($res->content, $video_id . ".xml"); sub login{ # トップにアクセス $mech->get('http://www.nicovideo.jp/'); # ログイン $mech->submit_form( fields => { mail => $mail, password => $password, },); $mech->get('http://www.nicovideo.jp/'); } sub save{ my ($content, $filename) = @_; open FH, ">$filename"; binmode FH; print FH $content; close FH; }