ようこそゲストさん

Magical Diary, beta version

[Perl] ニコニコ動画Perlインターフェイス (WWW::NicoVideo) 公開

2007/11/28 1:04 HIRATA Yasuyuki

ニコニコ動画の情報を取得する WWW::NicoVideo を作成した。RSSを作成するために最低限必要な部分しか作っておらず、非公開APIについても未対応。

CPAN
http://search.cpan.org/dist/WWW-NicoVideo/
いじり中Subversionリポジトリ
http://svn.coderepos.org/share/lang/perl/WWW-NicoVideo/
いじり中ソースコードブラウザ
http://coderepos.org/share/browser/lang/perl/WWW-NicoVideo/

使い方は 添付のサンプル を参照… では不親切なので、Feed に変換するプログラム:

use utf8;
use strict;
use warnings;
 
use Getopt::Std;
use Encode;
use Encode::Guess "euc-jp";
use XML::Feed;
use WWW::NicoVideo;
 
MAIN: {
  my %opts;
  getopts('m:p:t:k:f:o:', \%opts);
  my $mail = $opts{m} || die "mail required";
  my $passwd = $opts{p} || die "passwd required";
  my $outfile = $opts{o};
  my $format = $opts{f} || "Atom";
  my $key = defined $opts{k}? decode("Guess", $opts{k}): "律子ソロ";
  my $type = $opts{t} || "tag";
  my $method = {tag => "getEntriesByTagNames",
		"search" => "getEntriesByKeywords"}->{$type} or
		die "invalid type: $type";
 
  my $outfh;
  if(defined $outfile) {
    open $outfh, ">:utf8", $outfile;
  } else {
    $outfh = \*STDOUT;
    binmode STDOUT, ":utf8";
  }
 
  my $nv = new WWW::NicoVideo();
  $nv->mail($mail);
  $nv->passwd($passwd);
  $nv->login or die "login failed";
 
  my $feed = new XML::Feed($format);
  $feed->title("@{[ucfirst $type]}: $key - ニコニコ動画");
  $feed->link("http://www.nicovideo.jp/");
  foreach my $e ($nv->$method(key => $key, sort => "f", order => "d")) {
    my $ent = new XML::Feed::Entry($format);
    $ent->title($e->title);
    $ent->link($e->url);
    $ent->content($e->desc);
    $feed->add_entry($ent);
  }
 
  print $outfh $feed->as_xml;
}

使用例: perl ritsuko-feed.pl -m your-mail@example.org -p your-passwd -k "最東みんくP" -o minkhouse.atom

ritsuko.org始めました


#  非公開コメント   

  • TB-URL(確認後に公開)  http://diary.asuka.net/038/tb/
© 2007 HIRATA Yasuyuki <yasu@asuka.net>, all rights reserved