]> ruin.nu Git - ndwebbie.git/blobdiff - scripts/scans.pl
LWP::Simple fix for cloudfare
[ndwebbie.git] / scripts / scans.pl
index 943ad62dc7c8e8cb76b8a84c1a16d4577fa74ce2..8342960551e553c590a965c502bdf587fcea3085 100755 (executable)
 use strict;
 use warnings;
 no warnings 'exiting';
+use local::lib;
 use CGI;
 use DBI;
 use DBD::Pg qw(:pg_types);
-use LWP::Simple;
+
+use LWP::Simple qw/get $ua/;
+$ua->agent("Stupid user agent check is stupid");
 
 use FindBin;
 use lib "$FindBin::Bin/../lib";
@@ -128,6 +131,7 @@ sub parse_unit {
 sub parse_jumpgate {
        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){
                my ($sender) = $dbh->selectrow_array($findplanet,undef,$1,$2,$3,$scan->{tick});
                ($sender) = $dbh->selectrow_array($findoldplanet,undef,$1,$2,$3,$scan->{tick})
@@ -209,7 +213,7 @@ while (my $scan = $newscans->fetchrow_hashref){
                                my $text = $3;
                                my ($x,$y,$z) = $dbh->selectrow_array($findcoords,undef,$planet,$t);
                                die "No coords for: $planet tick $t" unless defined $x;
-                               if($news eq 'Launch' && $text =~ m/The (.*?) fleet has been launched, heading for (\d+):(\d+):(\d+), on a mission to (Attack|Defend). Arrival tick: (\d+)/g){
+                               if($news eq 'Launch' && $text =~ m{The (.*?) fleet has been launched, heading for <a class="coords" href="galaxy.pl\?x=\d+&amp;y=\d+">(\d+):(\d+):(\d+)</a>, on a mission to (Attack|Defend). Arrival tick: (\d+)}g){
                                        my $eta = $6 - $t;
                                        my $mission = $5;
                                        my $back = $6 + $eta;
@@ -220,7 +224,7 @@ while (my $scan = $newscans->fetchrow_hashref){
                                        my $id = addintel($1,$mission,$planet,$target,$6
                                                ,$eta,$back,undef, ($x == $2 && $y == $3));
                                        $intelscan->execute($id,$scan->{id});
-                               }elsif($news eq 'Incoming' && $text =~ m/We have detected an open jumpgate from (.*?), located at (\d+):(\d+):(\d+). The fleet will approach our system in tick (\d+) and appears to have roughly (\d+) ships/g){
+                               }elsif($news eq 'Incoming' && $text =~ m{We have detected an open jumpgate from (.*?), located at <a class="coords" href="galaxy.pl\?x=\d+&amp;y=\d+">(\d+):(\d+):(\d+)</a>. The fleet will approach our system in tick (\d+) and appears to have (\d+) visible ships}g){
                                        my $eta = $5 - $t;
                                        my $mission = '';
                                        my $back = $5 + $eta;
@@ -264,13 +268,14 @@ while (my $scan = $newscans->fetchrow_hashref){
 #$dbh->rollback;
 $dbh->commit;
 
-system 'killall','-USR1', 'irssi' if $parsedscans;
+system 'killall','-USR1', 'ndbot.pl' if $parsedscans;
 
 sub addfleet {
        my ($name,$mission,$ships,$sender,$tick,$amount) = @_;
 
        my @ships;
        my $total = 0;
+       $ships =~ s/,//g;
        while(defined $ships && $ships =~ m{((?:[a-zA-Z]| )+)</td><td(?: class="right")?>(\d+)}sg){
                $total += $2;
                push @ships, [$1,$2];