M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2009年8月26日 22:24

mixiの自分の日記のRSSを作るPerlスクリプト(XML::Feedを使ったサンプル)

このエントリーをはてなブックマークに追加 mixiチェック

コメント欄で問い合わせがあって、mixiの自分の日記をRSSに書き出すスクリプトが欲しいって言うんですけれども、3年半前のエントリであったため、すでにスクリプトの賞味期限が切れていたので、2009年8月現在でちゃんと動くスクリプトに直しました。

ユーザーID、パスワードはConfig:Pitで管理する方式です。

パスワード設定をコードに書かない(Config::Pit) - モダンなPerl入門 - モダンなPerl入門 [perl-users.jp]

スクリプトを動かす前に、上記リンク先を参照して、コマンドラインからアカウントとパスワードをセットしておこう。こんな感じでいいのでは。

$ perl -MConfig::Pit -e 'Config::Pit::set("mixi.jp", data=>{ email => "ABC12345", password => "password" })'

filename: miximydiary2rss.cgi

#!/usr/bin/perl 
 
use strict; 
use warnings;
use WWW::Mixi::Scraper;
use XML::Feed;
use DateTime::Format::HTTP;
use Config::Pit;
 
my $config = pit_get( 'mixi.jp' );
die "not preset account data in Pit." if !%$config;
my $email    = $config->{email}    or die 'email not found.';
my $password = $config->{password} or die 'password not found.';
 
my $mixi = WWW::Mixi::Scraper->new(
  email    => $email,
  password => $password,
);
my @list = $mixi->parse( 'http://mixi.jp/list_diary.pl' );
 
my $rss = XML::Feed->new( 'RSS',
          version => '1.0', encode_output => 0 );
$rss->title( 'mixi My Diary RSS' );
 
foreach my $item ( @list ) {
  my $entry = XML::Feed::Entry->new( 'RSS' );
  $entry->title  ( $item->{subject} );
  $entry->link   ( $item->{link   } );
  $entry->content( $item->{description } );
  my $dt = DateTime::Format::HTTP
           ->parse_datetime( $item->{time} )
           ->set_time_zone( 'Asia/Tokyo' );
  $entry->issued ( $dt );
  $rss->add_entry( $entry );
}
 
print "Content-Type: text/xml; charset=UTF-8;\n\n"; 
print $rss->as_xml,"\n";
 
exit;
 
__END__

もしかしたら、mixiの隠しAPIで一発で出せるのかな?

投稿 大野 義貴 [RSS, RSS] | |

トラックバック(1)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2956

クリスマスイブに作った、HWNDBasedPanelView.comという、InDesignのバグ画面を投稿できるサイト HWNDBasedPanelView.com ですが、今のままだと、いつ新しいHWNDBasedPanelView画像が投稿されたのかわからないので、RSSフィードを付けました。 RSSフィード対応ブラウザや、RSSフィードリーダなどで新着のご覧になれます。 http://hwndbasedpanelview.com/?rm=rss ここら辺の作業になると、ルーチンワークなので、... 続きを読む

コメントする