みのねっとぶろぐ
2007-05-19 [長年日記]
■ TimelogAPI perlサンプル2
Timelogの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 # 投稿者ID 46 print "$ref->{entry}->[$i]->{author}->{id} "; 47 # メモの内容 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も同様なプログラムで実装可能です。
今後は、携帯メールだけで投稿も取得も行えるプログラムでも組んでみようかと思っていたりするが・・・
■ カリブ海風チリソース焼そば
カリブ海風チリソース焼そばなるものを食べた。
エースコックからGW明けに発売された新商品で、エースコックのページによると
トマトやポークをベースに、パプリカなどの香辛野菜の旨みを利かせた チリトマトソースです。7種類の香辛料をブレンドし、辛さと旨さが 一層引き立つ別添スパイスを添えました。シャキシャキとしたキャベツ、 程よく味付けした大きめサイズの肉そぼろを入れました。
辛くて美味しかったです。ご飯が欲しくなりました。
残念ながら、キャンペーン中の「パイレーツ・オブ・カリビアン/ワールド・エンド」の映画公開記念プレミアム図書カードは入っていませんでしたw
■ 三社祭ライブ1
ということで、三社祭マチネライブ、昼間から飲みながらライブを見て楽しみました。
ライブで生ビール1、ワイン2を頂き演奏を堪能しました。
ライブ後は、すしや横町のお寿司屋さんでお寿司を堪能し、神輿が来る度に
お店から出てお祭り見物をしました。ここでも生ビール2。
夕方に帰って来て爆睡してしまったため、ジロは見られなかった(涙)
少し記憶がとぎれとぎれだしw でも、楽しかった。