はてなグラフ数値登録APIを使ってみた

肝心のデータ登録処理の部分は、「はてなグラフ数値登録API」のヘルプに載っていたコードそのまんまですが、漢字のグラフ名を UTF-8 で指定するところはかなりてこずりました。
『まるごとPerl!』という本の「まるごとEncode」という記事を何度も読み返して、数時間かかってようやくうまくいきました。おかげで Encode についても少しは理解できたかなと思います。
(ちなみに僕の作成&実行環境 coLinux + debian での文字コードが eucjp なので、decode('eucjp', '起床時間') としています。)
ほんとは、Windows + ActivePerl の環境でこれを実現したかったんだけど(コマンドプロンプトから実行できればこれがたぶん一番早くはてなグラフにデータを登録する方法だと思うので)、でも試してみたら X-WSSE がどうのこうのというエラーが出てだめでした。
それならと、BIGLOBE で借りているホームページ作成領域に CGI を置いて試してみたら、 use LWP::UserAgent; のところでひっかかってエラーが出てだめでした。
やりたいこともいくつか出てきたし、そろそろ Perl がちゃんと動くサーバ領域を借りてみようかなぁ。

$ cat hgraph.pl
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use Encode;

my $gname = decode('eucjp', '起床時間');  #graph name

my $usage = "usage: hgraph.pl DATA USER PASS [DATE]\n";
my $data = shift or die $usage;
my $user = shift or die $usage;
my $pass = shift or die $usage;
my $date;
$date = shift or $date = '';

print "$data $user $pass $date\n";

my $ua = LWP::UserAgent->new;
$ua->credentials('graph.hatena.ne.jp:80', '', $user, $pass);
my $res = $ua->post( 'http://graph.hatena.ne.jp/api/post', {
    graphname => encode('UTF-8', $gname),
    date => $date,
    value => $data
});
warn $res->content unless $res->code == 201;
exit;

実行例。(データはあくまでサンプルです。)

$ chmod u+x hgraph.pl
$ ./hgraph.pl
usage: hgraph.pl DATA USER PASS [DATE]
$ ./hgraph.pl 6:55 s_kanda xxx 2006-11-25
6:55 s_kanda xxx 2006-11-25
$ ./hgraph.pl 7:55 s_kanda xxx
7:55 s_kanda xxx


細かな点についてはまだまだあやふやな事が多いけど、はてなWebサービスAPIをちゃんと使えたことがけっこう嬉しい。