use DBI;
use DBD::Pg qw(:pg_types);
-use LWP::Simple;
-
-$0 =~ /(.*\/)[^\/]/;
-my $dir = $1;
-our $dbh;
-for my $file ("/home/whale/db.pl")
-{
- unless (my $return = do $file){
- warn "couldn't parse $file: $@" if $@;
- warn "couldn't do $file: $!" unless defined $return;
- warn "couldn't run $file" unless $return;
- }
-}
+use LWP::Simple qw/get $ua/;
+$ua->agent("Stupid user agent check is stupid");
+
+use FindBin;
+use lib "$FindBin::Bin/../lib";
+
+use ND::DB;
+
+our $dbh = ND::DB::DB();
+
$dbh->do("SET CLIENT_ENCODING TO 'LATIN1';");
-my $file = get("http://game.planetarion.com/manual.php?page=stats");
+my %classes = (Fighter => 'Fi', Corvette => 'Co', Frigate => 'Fr', Destroyer => 'De', Cruiser => 'Cr', Battleship => 'Bs');
+
+my $file = get("http://game.planetarion.com/manual.pl?page=stats");
$dbh->begin_work;
-my $st = $dbh->prepare(q{INSERT INTO ship_stats (name,"class",target,"type",init,guns,armor,damage,eres,metal,crystal,eonium,race) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)});
-while ($file =~ /((?:\w| )+)<\/td><td>(\w+)<\/td><td>(\w+)<\/td><td>(\w+)\D+(\d+)\D+(\d+)\D+(\d+)\D+?(\d+|-)\D+(\d+)\D+(\d+)\D+(\d+)\D+(\d+)\D+\d+\D+\d+.+?(\w+)<\/td>/g){
- my $dmg = $8;
+my $st = $dbh->prepare(q{INSERT INTO ship_stats (ship,"class",t1,t2,t3,"type",init,guns,armor,damage,eres,metal,crystal,eonium,race) VALUES(?,?,NULLIF(?,'-'),NULLIF(?,'-'),NULLIF(?,'-'),?,?,?,?,?,?,?,?,?,?)});
+while ($file =~ /class="(\w+)"><td>((?:\w| )+)<\/td><td>(\w+)<\/td><td>(\w+|-)(<\/td>)<td>(\w+)\D+(\d+)\D+(\d+)\D+(\d+)\D+?(\d+|-)\D+(\d+)\D+(\d+)\D+(\d+)\D+(\d+)\D+\d+\D+\d+.+?(\w+)<\/td>/g){
+ my $dmg = $10;
$dmg = 0 if $dmg eq '-';
- $st->execute($1,$2,$3,$4,$5,$6,$7,$dmg,$9,$10,$11,$12,$13) or die $dbh->errstr;
- #print "$1,$2,$3,$4,$5,$6,$7,$dmg,$9,$10,$11,$12,$13\n";
+ my $class = $classes{$3};
+ $st->execute($2,$class,$4,'-','-',$6,$7,$8,$9,$dmg,$11,$12,$13,$14,$1) or die $dbh->errstr;
+ print "$2,$class,$4,-,'-',$6,$7,$dmg,$9,$10,$11,$12,$13,$14,$1\n";
}
$dbh->commit;