找回密码
 立即注册
搜索
查看: 1785|回复: 6

[召唤]呼叫日语达人,你抠你抠的动画好像能转了,还带弹

[复制链接]
发表于 2008-5-11 03:27 | 显示全部楼层 |阅读模式
我日文烂透,总之这个网页里面有NICO的外联动画还带弹幕,界面也是NICO的界面呢
具体页面在这里
大家一起研究一下啊
要是我火星了也给我解释一下方法啊
下面这个就是我看到可以转NICO的地址
http://d.hatena.ne.jp/ucpda/
***********************************************************************8
2008-03-10 ニコニコ動画(SP1)のFLVダウンローダPerl版
ニコニコ動画(SP1)対応のFLVダウンローダPerl版
ニコニコ動画/Youtube

まめ畑さんのサイトを参考に,Perlを使って動作するFLVダウンローダを書いてみました.WindowsでもActivePerlとwgetが利用できる環境なら,動作すると思います.必要最低限の処理だけで,例外対処などは行っていません.拍子抜けするほど簡単なプロセスでダウンロードできるので,その日のランキング上位を寝ている間にダウンロード,とかリスト化されたURLの一括ダウンロード,とかいろんなことが出来そう.

プロセス
1.ログインページにPOSTデータを送りcookieその1をもらう

2.cookieその1を使い、動画ページにアクセスし、動画毎に発行されるcookieその2をもらう

3.cookieその1を使い、FLVの実体情報がかかれた情報を取得する

4.cookieその2を使い、FLVの実体情報を元にFLVファイルをダウンロードする

スクリプト
#!/usr/bin/perl

# ニコニコ動画(SP1) 簡易ダウンローダ ncget.pl
# USAGE: ./ncget.pl http://www.nicovideo.jp/watch/smXXXX

## 初期設定(必須)

$email = &uenc("foo\@baa.com");
$pass = &uenc("MyPassword");

# その他設定(デフォルトのままでおk)

$SaveDir = ".";
$target = $ARGV[0];
$loginURL = "https://secure.nicovideo.jp/secure/login?site=niconico";
$UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)";

if( $target =~ /http:\/\/www\.nicovideo\.jp\/watch\/sm[0-9]+/ ){

  $id = $target;
  $id =~ s/http:\/\/www\.nicovideo\.jp\/watch\///;
  $opt = "-q --user-agent='${UserAgent}' --no-check-certificate --cookies=on --keep-session-cookies";

  print "ニコニコ動画にログインしています...";
  `wget ${opt} --load-cookies=cookie.nctmp --save-cookies=cookie.nctmp -O /dev/null --post-data='next_url=&mail=${email}&password=${pass}' '${loginURL}'`;
  print "done.\n\n";

  print "動画ページのcookieを生成しています...";
  `wget ${opt} --load-cookies=cookie.nctmp --save-cookies=smcookie.nctmp -O /dev/null '$target'`;
  print "done.\n\n";

  print "FLVファイルの実体情報を取得しています...";
  `wget ${opt} --load-cookies=cookie.nctmp -O getflv.nctmp 'http://www.nicovideo.jp/api/getflv?v=${id}'`;
  print "done.\n\n";

  open(FH,"getflv.nctmp");
  $data = <FH>;
  close FH;
  chomp($data);

  $data = &udec($data);
  ($thread_id,$l,$url,$link,$ms,$user_id,$is_premium,$nickname,$time,$done) = split("&",$data);

  print "--動画情報------------------------\n";
  print "$thread_id\n";
  print "$url\n";
  print "$link\n";
  print "$ms\n";
  print "$user_id $is_premium $nickname\n";
  print "----------------------------------\n\n";

  $url =~ s/url\=//g;
  $opt =~ s/\-q//g;

  print "FLVファイルをダウンロードします...\n\n";
  `wget ${opt} --load-cookies=smcookie.nctmp -O '${SaveDir}/${id}.flv' '$url'`;
  print "ダウンロードが完了しました。\n";
  `rm *.nctmp`;
}else{
  print "Error : $ARGV[0]\n";
  print "ニコニコ動画のURLを指定してください。\n";
}

exit;

sub uenc($) {
my $str = shift;
$str =~ s/([^\w ])/'%'.unpack('H2', $1)/eg;
$str =~ tr/ /+/;
return $str;
}
sub udec($) {
my $str = shift;
$str =~ tr/+/ /;
$str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;
return $str;
}

独自にcookieを保持するので,ブラウザで見ていたログインセッションが終了されてしまう部分が難点.単にFLVをダウンロードしたいだけならSmileDownloader(Windows用)がオススメです.

また,ファイル名を動画タイトルにしようと思ったんだけど,どうも上手くいかない.原因は取得したUTF-8のページをnkf -s | grep ~で処理してる部分だと思うんだけど,再生ページのMETAタグに変なコードが混じる場合があり,そこでコケてるんだろうな.あとでもうちょっと調べてみるかな.

ちなみにシェルスクリプトでFireFoxのcookieを使って取得し,日本と台湾版に対応しているのはこちらにあるみたいです.

以下のサイトを参考させていただきました

URLエンコードとデコード http://sonic64.com/2003-08-31.html
二重認証の仕組み http://d.hatena.ne.jp/con_mame/20080205
追加:その他関連リンク

ニコニコ動画 swf、mp4、flvをダウンロードする - unnecessary words・・・Ruby版
回复

使用道具 举报

发表于 2008-5-11 03:47 | 显示全部楼层
看了下这个perl script,是用来下载flv文件的,并不能获取泥扣的comment。

在win32环境下运行还要装activeperl和wget。嗯,稍微改一下可以放到能运行perl脚本的服务器上提供中转服务。
回复

使用道具 举报

 楼主| 发表于 2008-5-11 03:59 | 显示全部楼层
就是说要有个中转的服务器才可以吗
回复

使用道具 举报

发表于 2008-5-11 04:10 | 显示全部楼层
这个程序不改过的话,得在自己电脑上用的。还得用perl执行,比较麻烦。 :mask:

如果单是下载泥扣的flv文件的话,用smiledownloader就够了
回复

使用道具 举报

发表于 2008-5-11 05:09 | 显示全部楼层
下弹幕用BOON-SUTAZIO
回复

使用道具 举报

     
发表于 2008-5-11 05:20 | 显示全部楼层
回复

使用道具 举报

发表于 2008-5-11 05:41 | 显示全部楼层
为了让这玩意儿要在win32上跑,稍微修改了一下。修改过的ncget.pl在附件里。



股沟ActivePerl 5.10.0.1002并下载安装之,然后下载这个带ssl的wget并解压到system32下面
http://www.christopherlewis.com/WGet/wget-1.11.1b.zip

ncget.pl里的设置只要改你的nico帐户和密码就行了,就是这两行:
$email = &uenc(\"user\\@mail.com\");
$pass = &uenc(\"password\");
注意@符号前面的\\符号别删掉。

然后执行:
ncget.pl http://www.nicovideo.jp/watch/smXXXXXX

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-8-14 16:56 , Processed in 0.086612 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表