use warnings;
use DBI;
use DBD::Pg qw(:pg_types);
+use Data::Dumper;
-use LWP::Simple;
-use lib qw{/var/www/ndawn/lib/};
-use ND::DB;
+use LWP::Simple qw/get $ua/;
+$ua->agent("Stupid user agent check is stupid");
-our $dbh = ND::DB::DB();
+use FindBin;
+use lib "$FindBin::Bin/../lib";
-$dbh->do("SET CLIENT_ENCODING TO 'LATIN1';");
+use ND::DB;
+use NDWeb::Stats;
-my %classes = (Fighter => 'Fi', Corvette => 'Co', Frigate => 'Fr', Destroyer => 'De', Cruiser => 'Cr', Battleship => 'Bs');
+our $dbh = ND::DB::DB();
-my $file = get("http://game.planetarion.com/manual.php?page=stats");
+my $file = get("http://game.planetarion.com/manual.pl?action=statsxml");
$dbh->begin_work;
-my $st = $dbh->prepare(q{INSERT INTO ship_stats (name,"class",t1,t2,t3,"type",init,guns,armor,damage,eres,metal,crystal,eonium,race) VALUES(?,?,NULLIF(?,'-'),NULLIF(?,'-'),NULLIF(?,'-'),?,?,?,?,?,?,?,?,?,?)});
-while ($file =~ /((?:\w| )+)<\/td><td>(\w+)<\/td><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 '-';
- my $class = $classes{$2};
- $st->execute($1,$class,$3,$4,$5,$6,$7,$8,$9,$dmg,$11,$12,$13,$14,$15) or die $dbh->errstr;
- #print "$1,$class,$3,$4,$5,$6,$7,$dmg,$9,$10,$11,$12,$13,$14,$15\n";
+my $st = $dbh->prepare(q{
+INSERT INTO ship_stats
+ (ship,"class",t1,t2,t3,"type",init,guns,armor,damage,eres,metal,crystal,eonium,race, cloaked, baseeta)
+ VALUES(?,?,NULLIF(?,'-'),NULLIF(?,'-'),NULLIF(?,'-'),?,?,?,?,?,?,?,?,?,(SELECT race FROM races WHERE race_name = ?), ?, ?)});
+
+my @columns = qw/ship class t1 t2 t3 type init guns armor damage eres metal crystal eonium race cloaked baseeta/;
+
+my @ships = parseStats($file);
+for my $ship (@ships) {
+ my @data;
+ for my $c (@columns) {
+ push @data, $ship->{$c};
+ }
+ #print Dumper(\@data), "\n";
+ print "@data\n";
+ $st->execute(@data) or die $dbh->errstr;
}
+
$dbh->commit;
$dbh->disconnect;