Distributed.netでは各個人の成績をXMLで入手することが出来ます.
このXMLをTwitterに投げるスクリプトを書いてみました.
use strict;
use XML::TreePP;
use Net::Twitter;
# IDとProject IDを設定.
# Project ID:RC5-72="8" OGR-25="25"
my $id = "347113";
my $project_id = "25";
# TwitterのIDとパスワードを設定.
my $twitter_username = "nagitsuki";
my $twitter_password = "***********";
my $stats_uri = "http://stats.distributed.net/participant/psummary_xml.php?id=" . $id . "&project_id=" . $project_id;
my $tpp = XML::TreePP->new();
my $tree = $tpp->parsehttp( GET => $stats_uri ) or die "Can't parse page\n";
my $stats_text;
#XMLから,登録名と昨日の順位,昨日の処理ノード数を取り込み.
my $participant_name = $tree->{'participant-summary'}->{'name'}, "\n";
my $yesterday_rank = $tree->{'participant-summary'}->{'stats'}->{'stat'}->[1]->{'-value'}, "\n";
my $yesterday_value = $tree->{'participant-summary'}->{'stats'}->{'stat'}->[3]->{'-value'}, "\n";
# Twitterに投稿するテキストを作成(OGR-25専用になってますね)
$stats_text = "Dnet stats(OGR-25p2):" . $participant_name . " Yesterday Rank:" . $yesterday_rank . " " . $yesterday_value . "Gnodes/sec";
$print $stats_text;
# Net::Twitterを使用して投稿.
my $twit = Net::Twitter->new(
username=>$twitter_username
, password=>$twitter_password
);
#my $result = $twit->update($stats_text);
久しぶりにプログラムというものを書いてみたので(しかもPerlなんてほとんど始めて)なにか変かもしれません.
XML::TreePPとNet::Twitterを使用することでほとんどコードを書かなくても作ることが出来ました.これが高速道路ってやつか.
ツインテール関係ないじゃんって話もありますが,もともとD.netのページなので問題なし.
追記 2008/6/23
タイトルにスペルミスがあったので修正しました。