Runner in the High

技術のことをかくこころみ

みくったーの最新版をチェックするPerlスクリプトを作った

 

LWP::UserAgentHTML::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);

すっごい汚いスクリプトになったけど動くからいいだろ(すっとぼけ)