#!/usr/bin/perl ## リィドミィ 1.2.1 - 10/01/06 ## Copyright (C) 2010 Y.Kumagai, ClockRoom Software ## mixiの新着情報をRSSで受信 ## ## 受信内容 ## ・マイミクシィ最新日記 ## ・コミュニティ最新書き込み ## ## 利用手順 ## 1. 環境に合わせて書き換える ## 2. ウェブサーバへセットアップ ## 3. URLをRSSリーダーなどへ登録 ## ## 別途必要なモジュール ## ・WWW::Mixi::Scraper ## ・XML::RSS ## ## 環境に合わせて書き換える ## ・Perlのパス (line 1) ## ・モジュールのパス (line 35) ## ・ログイン名 (line 57) ## ・パスワード (line 58) ## ## 注意事項 ## ・UTF-8Nで保存してください ## ・第三者アクセスに注意してください ## ## ※以上の内容が理解出来ない方は利用出来ません。 ############################################################ #use lib '/home/foo/bar'; ############################################################ use strict; use utf8; ############################################################ use CGI qw(header); use HTML::Entities; use HTTP::Date qw(time2str parse_date); use Time::Local; use WWW::Mixi::Scraper; use XML::RSS; ############################################################ use open qw(:std :utf8); ############################################################ use constant USER=>'ログイン名(メールアドレス)'; use constant PASSWORD=>'パスワード'; use constant TITLE=>'mixi'; use constant DESCRIPTION=>'mixi 新着情報'; use constant LINK=>'http://mixi.jp/'; ############################################################ main(); exit(0); ############################################################ sub main { my $rss=new XML::RSS(version=>'2.0',encoding=>'UTF-8',encode_output=>0); $rss->channel( title=>ee(TITLE), description=>ee(DESCRIPTION), link=>ee(LINK)); foreach my $item (@{query()}) { $rss->add_item( title=>ee(sprintf('[%s] %s',$$item{name},$$item{subject})), link=>ee($$item{link}), pubDate=>time2str($$item{time})); } print(header(-type=>'application/xml',-charset=>'UTF-8')); print($rss->as_string()); } sub ee {encode_entities($_[0],'<>&"')} ############################################################ sub query { my $mixi=new WWW::Mixi::Scraper(email=>USER,password=>PASSWORD); my @qry=(); my @a; for(my $i=1;(@a=$mixi->new_friend_diary->parse(page=>$i))>0;$i++) { push(@qry,@a); } for(my $i=1;(@a=$mixi->new_bbs->parse(page=>$i))>0;$i++) { push(@qry,@a); } map { @a=localtime(time()); $$_{time}=sprintf('%d-%s',$a[5]+1900-($1-1>$a[4] ? 1 : 0),$$_{time}) if($$_{time}=~/^(\d{2})-/); @a=parse_date($$_{time}); $a[1]-=1; $$_{time}=timelocal(reverse(@a[0..5])); } @qry; return \@qry; } ############################################################