stackoverflow.com の reputation をアイコンとともに貼りつけてみた。
favicon と並べるには公式の Flair は大きすぎるので、旧式の Flair をみつけて、スクレイピング -> 画像生成 -> Amazon S3 に PUT するスクリプトをでっちあげた。ちなみに旧式の Flair は廃止予定だそう。
https://gist.github.com/899395
#!/usr/bin/env perl
use strict;
use warnings;
use Web::Scraper;
use URI;
use Config::Pit;
use Net::Amazon::S3;
my $flair = 'http://stackoverflow.com/users/flair/374851.html';
my $scraper = scraper {
process '.reputation-score', 'reputation' => 'TEXT';
};
my $result = $scraper->scrape(URI->new($flair));
my $reputation = $result->{reputation};
`convert -font Times-Roman -pointsize 16 label:$reputation stackoverflow-reputation-score.png`;
my $config = pit_get('s3.amazonaws.com');
my $s3 = Net::Amazon::S3->new(
%$config,
retry => 1,
);
my $client = Net::Amazon::S3::Client->new(s3 => $s3);
my $bucket = $client->bucket(name => "kyanny");
my $object = $bucket->object(
key => 'stackoverflow-reputation-score.png',
acl_short => 'public-read',
content_type => 'image/png',
);
$object->put_filename('stackoverflow-reputation-score.png');
#print $object->uri, "\n";cron でまわす。 perlbrew 使ってるので PATH に注意。 cron は環境変数をクリアする。
[kyanny ~]$ crontab -l 0 * * * * PATH=/home/kyanny/perl5/perlbrew/bin:/home/kyanny/perl5/perlbrew/perls/current/bin:/usr/bin:/bin perl /home/kyanny/stackoverflow-reputation-score.pl
