[ create a new paste ] login | about

Link: http://codepad.org/bUTpe3KR    [ raw code | fork ]

tknr - Perl, pasted on Oct 22:
#!/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" );
	}
}


Create a new paste based on this one


Comments: