はてなグラフに登録する

で、持ち株数分の株価を集計してはてなグラフに登録する。今まで気が向いたときに手で登録してたんだけど、はてなグラフ数値登録APIの存在を知り自動化することにした。あとはこれを16時くらいに動くようにすればよし。

#!/usr/bin/perl -w
use strict;
use warnings;

use HTTP::Request::Common;
use LWP::UserAgent;
use DateTime;
use Readonly;

Readonly my $USERNAME => 'hetappi';
Readonly my $PASSWD   => 'xxxxxxx';
Readonly my $GRAPH    => 'stock';
Readonly my @STOCK    => (
  ['9404.t', 10], ['9401.t', 100], ['4676.t', 1], ['9409.t', 1], ['9411.t', 100]);

sub get_stock_price {
  my ($code) = @_;

  my $url = sprintf('http://quote.mobile.yahoo.co.jp/f?a=d&sy=%s&k=', $code);
  my $response = LWP::UserAgent->new->get($url);
  my ($price) = $response->content =~ /取引値 ([\d,-]+)/;
  $price =~ s/,//g;

  $price;
}

sub regist_hatena_graph_value {
  my ($name, $passwd, $graph, $value) = @_;

  my $ua = LWP::UserAgent->new;
  $ua->credentials('graph.hatena.ne.jp:80', '', $name, $passwd);
  my $res = $ua->post(
    'http://graph.hatena.ne.jp/api/post',
    {graphname => $graph, date => DateTime->now->ymd, value => $value});
}

my $price = 0;
foreach my $ss(@STOCK) {
  $price += get_stock_price($ss->[0]) * $ss->[1];
}
regist_hatena_graph_value($USERNAME, $PASSWD, $GRAPH, $price);