LWP::UserAgentとHTML::TreeBuilderとかいう便利なライブラリを見つけた。
勢いにまかせてみくったーの最新版があるかどうかをチェックするスクリプトをPerlで組んでみた。
やってることはダウンロードページのhtmlを無理やりスクレイピングしてるだけです。
#!/usr/bin/perl
#
# みくったーの最新版があるのかどうかを調べるPerlスクリプト
#
use strict;
use warnings;
use LWP::UserAgent;
use HTML::TreeBuilder;
my $target = 'http://mikutter.hachune.net/download';
my $conf = '/home/izumi/mikutter.0.2.2.1328/core/config.rb';
my $installed;
my $string;
my @vers;
my $ver;
my $rev;
# コンピューターにインストールされているバージョンを取得する
open (FILE, $conf) || die "Can't open: $!\n";
while () {
if ($_ =~ /REVISION/ && $_ !~ /TWITTER_AUTHENTICATE_REVISION/) {
if ($_ =~ /VERSION/) { $ver = $_; }
else { $rev = $_; }
}
}
close(FILE);
# ドットを取り除いて比較のために数値へ変換する
@vers = split(/,/, $ver);
$_ =~ s/[^0-9]//g foreach (@vers);
$rev =~ s/[^0-9]//g;
$vers[$#vers] = $rev;
$installed = $installed.$_ foreach (@vers);
$installed += 0;
# 表示のためにまたドットを含むフォーマットに戻す
foreach (@vers) {
$string = $string.$_;
$string = $string."." if ($_ ne $vers[$#vers])
}
print "\nInstalled Ver: ".$string."\n";
# 最新版のバージョンをウェブサイトから取得する
my $ua = LWP::UserAgent->new('agent' => "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)");
my $res = $ua->get($target);
my $content = $res->content;
my $tree = HTML::TreeBuilder->new;
my @items;
my $current;
$tree->parse($content);
@items = $tree->look_down('class', 'accordion versions')->find('li');
foreach (@items) {
$current = $_->as_text;
$current =~ s/[^0-9]//g;
$current += 0;
if ($current > $installed) {
print "Curent Ver: ".$_->as_text,"\n\n";
print "There is a new version!\n";
print "You have to update it ASAP.\n";
exit(1);
}
}
print "\nThere isn't a new version.\n";
print "You don't have to update it :P\n";
exit(0);
すっごい汚いスクリプトになったけど動くからいいだろ(すっとぼけ)