@kyanny's blog

My life. Opinions are my own.

stackoverflow.com の reputation をアイコンとともに貼りつけてみた。

http://gyazo.com/e4533a7c4a97478e9e07a8e7ccaf48f6.png

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