]> ruin.nu Git - ndwebbie.git/blobdiff - scripts/stats.pl
Stat updates for r100
[ndwebbie.git] / scripts / stats.pl
index d69d42cb6189c534c3c1844b1e4ef0b97538899a..ee12e933e2a4af0968638762127ce1086c887529 100755 (executable)
@@ -24,6 +24,7 @@ use strict;
 use warnings;
 use DBI;
 use DBD::Pg qw(:pg_types);
+use Data::Dumper;
 
 use LWP::Simple qw/get $ua/;
 $ua->agent("Stupid user agent check is stupid");
@@ -32,22 +33,28 @@ use FindBin;
 use lib "$FindBin::Bin/../lib";
 
 use ND::DB;
+use NDWeb::Stats;
 
 our $dbh = ND::DB::DB();
 
-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");
+my $file = get("http://game.planetarion.com/manual.pl?action=statsxml");
 $dbh->begin_work;
-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+|-)<\/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 = $11;
-       $dmg = 0 if $dmg eq '-';
-       my $class = $classes{$3};
-       my $type = $7;
-       $type = 'Emp' if $type eq 'EMP';
-       $st->execute($2,$class,$4,$5,$6,$7,$8,$9,$10,$dmg,$12,$13,$14,$15,$1) or die $dbh->errstr;
-       print "$2,$class,$4,$5,$6,$7,$8,$9,$10,$dmg,$12,$13,$14,$15,$1\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;
 }