use warnings;
no warnings 'exiting';
use local::lib;
+use Sys::RunAlone;
use CGI;
use DBI;
use DBD::Pg qw(:pg_types);
use lib "$FindBin::Bin/../lib";
use ND::DB;
+use NDWeb::Scans;
our $dbh = ND::DB::DB();
VALUES(?,?,?,?,?,?,?,?,?,-1) RETURNING id});
my $intelscan = $dbh->prepare(q{INSERT INTO intel_scans (intel,id) VALUES(?,?)});
my $addships = $dbh->prepare(q{INSERT INTO fleet_ships (fid,ship,amount) VALUES(?,?,?)});
-my $addplanetscan = $dbh->prepare(q{INSERT INTO planet_scans
- (id,tick,pid,metal_roids,metal,crystal_roids,crystal,eonium_roids,eonium
- ,agents,guards,light,medium,heavy,hidden)
- VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)});
sub parse_planet {
my ($scan,$file) = @_;
- my @values = ($scan->{id},$scan->{tick},$scan->{pid});
- $file =~ s/(\d),(\d)/$1$2/g;
-
- while($file =~ m{"center">(Metal|Crystal|Eonium)</td>\D+(\d+)\D+([\d,]+)}g){
- push @values,$2,$3;
- }
- if($file =~ m{Security\ Guards .+? "center">(\d+)</td>
- .+? "center">(\d+)</td>}sx){
- push @values,$1,$2;
- }
- if($file =~ m{<td class="center">([A-Z][a-z]+)</td><td class="center">([A-Z][a-z]+)</td><td class="center">([A-Z][a-z]+)</td>}){
- push @values,$1,$2,$3;
- }
- if($file =~ m{<span class="superhighlight">([\d,]+)</span>}){
- push @values,$1;
- }
- $addplanetscan->execute(@values);
+ doPlanetScan($dbh, $scan, $file);
}
sub parse_incoming {
my ($scan,$file) = @_;
$file =~ s/,//g;
- while ($file =~ m{(\d+):(\d+):(\d+)\D+(Attack|Defend|Return)</td><td class="left">([^<]*)\D+(\d+)\D+(\d+)}g){
+ while ($file =~ m{(\d+):(\d+):(\d+)(?::\d+)?\D+(Attack|Defend|Return)</td><td class="left">([^<]*)\D+(\d+)\D+(\d+)}g){
my ($sender) = $dbh->selectrow_array($findplanet,undef,$1,$2,$3,$scan->{tick});
($sender) = $dbh->selectrow_array($findoldplanet,undef,$1,$2,$3,$scan->{tick})
if ((not defined $sender) && $4 eq 'Return');
}
+sub parse_military {
+ my ($scan,$file) = @_;
+
+ doMilScan($dbh, $scan, $file);
+}
+
my $adddevscan = $dbh->prepare(q{INSERT INTO development_scans
(id,tick,pid,light_fac,medium_fac,heavy_fac,amps,distorters
,metal_ref,crystal_ref,eonium_ref,reslabs,fincents,milcents,seccents,structdefs
Unit => \&parse_unit,
'Advanced Unit' => \&parse_unit,
Jumpgate => \&parse_jumpgate,
+ Military => \&parse_military,
);
,$target,$tick, $eta, $back, $amount,$ingal);
return $id;
}
+
+__END__