updated dxoldtonew.pl to be more modern...
[spider.git] / perl / dxoldtonew.pl
index 9ad356054b2ed3b9e5146c5a50ee5bfb063148c4..e4261b58c536c00f210dc4101c4215d2cdf3cdb7 100755 (executable)
@@ -1,34 +1,56 @@
 #!/usr/bin/perl
 #
-# convert an Ak1a DX.DAT file to comma delimited form
+# convert an AK1A DX.DAT file to comma delimited form
 #
+# PLEASE BE WARNED:
 #
+# This routine is really designed for archive data. It will create and add to 
+# standard DXSpider spot files. If those spot files already exist (because you
+# were running DXSpider at the same time as collecting this 'old' data) then
+# this will simply append the data onto the end of the appropriate spot file
+# for that day. This may then give strange 'out of order' results when viewed
+# with the show/dx command
+#
+# $Id$
+#
+# Copyright (c) 1998-2003 Dirk Koopman G1TLH
+#
+
+# search local then perl directories
+BEGIN {
+       # root of directory tree for this system
+       $root = "/spider"; 
+       $root = $ENV{'DXSPIDER_ROOT'} if $ENV{'DXSPIDER_ROOT'};
+       
+       unshift @INC, "$root/perl";     # this IS the right way round!
+       unshift @INC, "$root/local";
+}
 
-use Date::Parse;
+use DXUtil;
 use Spot;
 use Prefix;
 
-sysopen(IN, "../data/DX.DAT", 0) or die "can't open DX.DAT ($!)";
-open(OUT, ">../data/dxcomma") or die "can't open dxcomma ($!)";
+$ifn = "$root/data/DX.DAT";
+$ifn = shift if @ARGV;
+print "Using: $ifn as input... \n";
 
-Prefix::load();
+sysopen(IN, $ifn, 0) or die "can't open $ifn ($!)";
 
-$fn = Spot::prefix();
-system("rm -rf $fn/*");
+Prefix::init();
+Spot::init();
 
 while (sysread(IN, $buf, 86)) {
   ($freq,$call,$date,$time,$comment,$spotter) = unpack 'A10A13A12A6A31A14', $buf;
-  $d = $date =~ s/^\s*(\d+)-(\w\w\w)-(19\d\d)$/$1 $2 $3/o;
-  $t = $time =~ s/^(\d\d)(\d\d)Z$/$1:$2 +0000/o;
-  $dt = undef;
-  $dt = str2time("$date $time") if $d && $t;
+#  printf "%-13s %10.1f %s %s by %s %s\n", $call, $freq, $date, $time, $spotter, $comment;
+  
+  $dt = cltounix($date, $time);
   $comment =~ s/^\s+//o;
   if ($dt ) {
-    Spot::add($freq, $call, $dt, $comment, $spotter);
+         my @spot = Spot::prepare($freq, $call, $dt, $comment, $spotter);
+         Spot::add(@spot);
   } else {
-    print "$call $freq $date $time\n";
+    print "ERROR: $call $freq $date $time by $spotter $comment\n";
   }
 }
 
 close(IN);
-close(OUT);