みのねっとぶろぐ
2007-05-19 [長年日記]
■ [CGI]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

[ツッコミを入れる]
[]





