[TimelogAPI perlサンプル2]
http://d.mino.net/20070519.html#p01TimelogAPI perlサンプル2
Timelog http://timelog.jp/のAPI perlサンプル第2弾です。
ちょっと時間が取れず1週間経ってしまい今更感がありますが。
今回は、「自分とメモフレンドの発言を取得する」friends_msg.aspです。
1 #!/usr/bin/perl -w 2 use strict; 3 use Encode; 4 use LWP::UserAgent; 5 use XML::Simple qw(XMLin); 6 7 $ENV{TZ} = 'JST-9'; 8 my $u = 'hogehoge'; # ID 9 my $p = 'xxxxxxx'; # パスワード 10 my $c = 20; # 取得するメモ件数(MAX50) 11 my $t = 1; # 現在より$t時間前からのメモを取得 12 # 0以上が指定された場合、メモ件数はMAXの50件とする 13 14 my $status = &timelog_get( $u,$p,$c,$t,'eucjp' ); 15 print "status = $status?n"; 16 exit(0); 17 18 sub timelog_get { 19 my ( $user,$pass,$cnt,$hour,$cd ) = @_; 20 if ( $user eq '' ) { return( 'User Unknown' ); } 21 if ( $pass eq '' ) { return( 'Pass Unknown' ); } 22 my $opt; 23 if ( defined( $hour ) && $hour > 0 ) { 24 my ($ss,$mm,$hh,$DD,$MM,$YY,$wday,$yday,$isdst) = localtime(time-$hour*60*60); 25 $opt = sprintf( "cnt=50&!
fmt=xml&since=%04d%02d%02d%02d%02d",$YY+1900,$MM+1,$DD,$hh,$mm ); 26 } else { 27 $opt = "cnt=$cnt&fmt=xml"; 28 } 29 print "opt=$opt?n"; 30 my $req = HTTP::Request->new( GET => "http://api.timelog.jp/friends_msg.asp??$opt" ); 31 $req->authorization_basic( $user, $pass ); 32 my $ua = LWP::UserAgent->new( keep_alive => 1,timeout => 30 ); 33 $ua->parse_head(0); 34 my $res = $ua->request( $req ); 35 if ( $res->is_success ) { 36 &timelog_xml( $res->content,$cd ); 37 return 0; 38 } 39 else { return $res->status_line; } 40 } 41 sub timelog_xml { 42 my ( $xml,$cd ) = @_; 43 my $ref = XMLin($xml,ForceArray => [qw(entry)], KeyAttr => [qw(entry)]); 44 for ( my $i = 0; $i < 50 && defined( $ref->{entry}->[$i]->{author}->{id} ) ; $i++ ) { 45 # 投稿����苗��������頏蜴�△鱚罩���銓鴒���曚蛞�苳寺瓠��蓖鵆����糺����慣������ぢメモの内容 48 Encode::from_to( $ref->{entry}->[$i]->{memo},'utf8',$cd ); 49 print "$ref->{entry}->[$i]->{memo} "; 50 # 宛先ID 51 if ( ! ref( $ref->{entry}->[$i]->{toid} ) ) { 52 print ">$ref->{entry}->[$i]->{toid} "; 53 } 54 # 使用タグ 55 if ( ! ref( $ref->{entry}->[$i]->{tag} ) ) { 56 Encode::from_to($ref->{entry}->[$i]->{tag},'utf8',$cd ); 57 foreach ( split( /?,/,$ref->{entry}->[$i]->{tag} ) ) { 58 print "[$_]"; 59 } 60 } 61 # メモ投稿日 62 my $tm = substr( $ref->{entry}->[$i]->{modified},11,5 ); 63 print "$tm?n"; 64 } 65 }
XML::Simpleを使ったとこが気に食わないのですが、一応これで。
今回も、文字コードを意識的に、日本語EUCで表示させるようにしています。
これで、他の取得系のAPIも同様なプログラムで実装可能です。
今後は、携帯メールだけで投稿も取得も行えるプログラムでも組んでみようかと思っていたりするが・・・
ツッコミを入れる http://d.mino.net/20070519.html#c
[カリブ海風チリソース焼そば] http://d.mino.net/20070519.html#p02
カリブ海風チリソース焼そば
カリブ海風チリソース焼そばなるものを食べた。
エースコック http://www.acecook.co.jp/からGW明けに発売された新商品で、エースコックのページによると
トマトやポークをベースに、パプリカなどの香辛野菜の旨みを利かせた チリトマトソースです。7種類の香辛料をブレンドし、辛さと旨さが 一層引き立つ別添スパイスを添えました。シャキシャキとしたキャベツ、 程よく味付けした大きめサイズの肉そぼろを入れました。
辛くて美味しかったです。ご飯が欲しくなりました。
残念ながら、キャンペーン中の「パイレーツ・オブ・カリビアン/ワールド・エンド」の映画公開記念プレミアム図書カードは入っていませんでしたw
画像 "http://d.mino.net/images/20070519_0.jpg"
ツッコミを入れる http://d.mino.net/20070519.html#c
みのねっと http://mino.net/