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