codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#!/usr/bin/env perl # # $Id: nicoget.pl,v 0.1 2007/08/03 19:26:19 dankogai Exp dankogai $ # original: http://yusukebe.com/tech/archives/20070803/124356.html # use strict; use warnings; use LWP::UserAgent; use HTTP::Cookies; use HTTP::Request; use HTTP::Headers; use CGI; use YAML::Tiny; my $argv_size = @ARGV; if ( $argv_size == 0 ) { print "usage: perl dl_nicovideo.pl [url] <[0|1]>\n"; print "[url] : url which has youtube url\n"; print "<[0|1]> : 0:id as filename 1:id_title as filename\n"; exit; } ## login my $yaml = "$ENV{HOME}/.nicovideo.yml"; my $conf = YAML::Tiny->new; $conf = YAML::Tiny->read($yaml) or die "$yaml:$!"; $ARGV[0] =~ /(sm\d+)$/ or die "$0 [video_id|uri]"; my $video_id = $1; my $ua = LWP::UserAgent->new( keep_alive => 4 ); $ua->cookie_jar( {} ); warn "login as $conf->{mail}\n"; $ua->post( "http://www.nicovideo.jp/login" => $conf ); ## load { $ua->get("http://www.nicovideo.jp/watch/$video_id"); my $res = $ua->get("http://www.nicovideo.jp/api/getflv?v=$video_id"); my $q = CGI->new( $res->content ); my $url = $q->param('url') or die "Failed: " . $res->content; warn "$url => $video_id.flv\n"; $res = $ua->request( HTTP::Request->new( GET => $url ), "$video_id.flv" ); ## get comment { warn "saving comments as $video_id.xml\n"; my $header = HTTP::Headers->new; $header->header( Content_Type => 'text/xml' ); my $thread_id = $q->param('thread_id'); my $req = HTTP::Request->new( POST => $q->param('ms'), $header, qq{<thread res_from="-500" version="20061206" thread="$thread_id" />} ); $res = $ua->request( $req, "$video_id.xml" ); } }
Private
[
?
]
Run code