From: Dirk Koopman Date: Sat, 20 Apr 2024 21:15:37 +0000 (+0100) Subject: Merge branch 'test' into mojo X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=commitdiff_plain;h=d9327446e316cebc269c98c976bab1eaed8f8ee0;hp=1f377d13abe8a3b793d5aead71b700c4dc79619a;p=spider.git Merge branch 'test' into mojo --- diff --git a/Changes b/Changes index bfcad922..4161d2ac 100644 --- a/Changes +++ b/Changes @@ -1,3 +1,6 @@ +20Apr24====================================================================== +1. Try to "fix" Spot deduping (again). This is probably Work In Progress... +2. A new(er) band.pl gratefully received from Andy G4PIQ. 13Apr24====================================================================== 1. Fix small issue with perl 5.20 (and possibly earlier) compilation. 27Mar24====================================================================== diff --git a/data/bands.pl b/data/bands.pl index 1bd60f67..dfaef053 100644 --- a/data/bands.pl +++ b/data/bands.pl @@ -7,12 +7,20 @@ # these pairs attach themselves to the labels you provide, they are # independant of any other pair, they can overlap, cross etc. # -# There MUST be at last a 'band' entry +# There MUST be at least a 'band' entry # # It is up to YOU to make sure that it makes sense! # # ALL the labels MUST BE in lower case. # +# Band names change (or I got them wrong in the first place), DO NOT CHANGE THE BAND NAMES +# THAT I USED. If you do then expect to get complaints. Instead just alias them to what +# you think they should be in the section below %bands. +# +# WARNING: if aliasing, the band alias must be declared AFTER the original. +# +# See '550khz' and '630m' as an exemplar. +# %bands = ( @@ -22,11 +30,11 @@ '136khz' => bless ( { band => [135, 138], }, 'Bands'), - '500khz' => bless ( { band => [493, 525], + '500khz' => bless ( { band => [472, 479], }, 'Bands'), '160m' => bless( { band => [ 1800, 2000 ], - cw => [ 1800, 1838 ], + cw => [ 1800, 1840 ], rtty => [ 1838, 1841 ], data => [ 1838, 1843], ssb => [ 1831, 2000] @@ -34,7 +42,7 @@ '80m' => bless( { band => [ 3500, 4000 ], cw => [ 3500, 3600 ], - data => [ 3580, 3619 ], + data => [ 3570, 3619 ], rtty => [ 3580, 3619 ], sstv => [ 3730, 3740 ], ssb => [ 3601, 4000 ] @@ -44,11 +52,11 @@ ssb => [5300, 5410], }, 'Bands' ), - '40m' => bless( { band => [ 7000, 7400 ], + '40m' => bless( { band => [ 7000, 7300 ], cw => [ 7000, 7040 ], data => [ 7040, 7100], rtty => [ 7040, 7060], - ssb => [ 7050, 7400 ] + ssb => [ 7050, 7300 ] }, 'Bands'), '30m' => bless( { band => [ 10100, 10150 ], @@ -97,66 +105,82 @@ ssb => [ 28201, 29299, 29550, 29700] }, 'Bands'), - '6m' => bless( { band => [50000, 52000], + '8m' => bless( { band => [40000, 42000], + }, 'Bands'), + + '6m' => bless( { band => [50000, 54000], cw => [50000, 50100], - ssb => [50100, 50500], + ssb => [50100, 50400], + data => [50300, 50500], + }, 'Bands'), + + '5m' => bless( { band => [60000, 62000], }, 'Bands'), +# 5m band General allocation in Ireland only, with Denmark and UK with beacons - '4m' => bless( { band => [70000, 70631], - cw => [70030, 70250], - ssb => [70030, 70250], + '4m' => bless( { band => [69887, 71500], + cw => [70000, 70250], + ssb => [70100, 70250], }, 'Bands'), +# Denmark down to 69.8875. UK NoV operation up to 71.500 '2m' => bless( { band => [144000, 148000], cw => [144000, 144150], - ssb => [144150, 144500] + ssb => [144150, 144400] }, 'Bands'), - '220' => bless( { band => [220000, 222000], +#Little real CW and SSB differentiation above 2m so remove CW and SSB filters + + '220' => bless( { band => [220000, 224000], }, 'Bands'), - '70cm' => bless( { band => [430000, 450000], - cw => [432000, 432150], - ssb => [432150, 432500], + '70cm' => bless( { band => [420000, 450000], + }, 'Bands'), + +#70cm starts at 420 MHz and extends to 450 MHz in Region 2 + + '902' => bless( { band => [902000, 928000], }, 'Bands'), - '23cm' => bless( { band => [ 1240000, 1325000], - cw => [1296000, 1296150], - ssb => [1296150, 1296800], + '23cm' => bless( { band => [ 1240000, 1300000], }, 'Bands'), - '13cm' => bless( { band => [2310000, 2450000], - cw => [2320100, 2320150], - ssb => [2320150, 2320800], + '13cm' => bless( { band => [2300000, 2450000], }, 'Bands'), - '9cm' => bless( { band => [3400000, 3475000], - cw => [3400000, 3402000], - ssb => [3400000, 3402000], + '9cm' => bless( { band => [3300000, 3500000], }, 'Bands'), +#9cm extends to 3500 MHz in Region 2 and starts at 3300 MHz in Region 3 - '6cm' => bless( { band => [5650000, 5850000], - cw => [5668000, 5670000, 5760000, 5762000], - ssb => [5668000, 5670000, 5760000, 5762000], + '6cm' => bless( { band => [5650000, 5925000], }, 'Bands'), +#6cm extends to 5925 MHz in Region 2 and 3 '3cm' => bless( { band => [10000000, 10500000], - cw => [10368000,10370000, 10450000, 10452000], - ssb => [10368000,10370000, 10450000, 10452000], }, 'Bands'), +#Bands above 10 GHz normally referred to by Frequency so make 24G, 47G, 76G etc + '12mm' => bless( { band => [24000000, 24250000], - cw => [24048000, 24050000], - ssb => [24048000, 24050000], }, 'Bands'), '6mm' => bless( { band => [47000000, 47200000], - cw => [47087000, 47089000], - ssb => [47087000, 47089000], }, 'Bands'), - '4mm' => bless( { band => [75500000, 81000000], + + '4mm' => bless( { band => [75500000, 81500000], }, 'Bands'), + '122g' => bless( { band => [122250000, 123000000], + }, 'Bands'), + + '134g' => bless( { band => [134000000, 141000000], + }, 'Bands'), + + '248g' => bless( { band => [241000000, 250000000], + }, 'Bands'), + + + 'band1' => bless ( { band => [47000, 49999, 52000, 68000], }, 'Bands'), @@ -193,6 +217,16 @@ vhf => bless ( { band => [30000, 299999], }, 'Bands'), ); +# +# fix up some aliases +# + +$bands{'630m'} = $bands{'500khz'}; +$bands{'24g'} = $bands{'12mm'}; +$bands{'47g'} = $bands{'6mm'}; +$bands{'76g'} = $bands{'4mm'}; + + # # the list of regions # @@ -203,18 +237,18 @@ # %regions = ( - vlf => [qw( 73khz 136khz 500khz )], + vlf => [qw( 73khz 136khz 630m )], hf => [qw( 160m 80m 60m 40m 30m 20m 17m 15m 12m 10m )], contesthf => [qw( 160m 80m 40m 20m 15m 10m )], vhf => [qw( 6m 4m 2m 220 )], vhfradio => [qw( band1 band2 )], vhftv => [qw( band1 band3 )], - uhf => [qw( 70cm 23cm )], + uhf => [qw( 70cm 902 23cm )], uhftv => [qw( band4 band5 )], - shf => [qw( 23cm 13cm 9cm 6cm 3cm )], + shf => [qw( 23cm 13cm 9cm 6cm 3cm 24g 47g 76g 121g 134g 248g )], pmr => [qw( pmrlow pmrmid pmrhigh pmruhf )], - spe => [qw( 10m 6m 4m 2m )], + spe => [qw( 10m 8m 6m 5m 4m 2m )], warc => [qw( 60m 30m 17m 12m )], - all => [qw( 73khz 136khz 160m 80m 60m 40m 30m 20m 17m 15m 12m 10m 6m 4m 2m 220 70cm 23cm 9cm 6cm 3cm 12mm 6mm )], + all => [qw( 73khz 136khz 630m 160m 80m 60m 40m 30m 20m 17m 15m 12m 10m 8m 6m 5m 4m 2m 220 70cm 902 23cm 9cm 6cm 3cm 24g 47g 76g 121g 134g 248g)], ); diff --git a/perl/DXDupe.pm b/perl/DXDupe.pm index 012039ee..795346db 100644 --- a/perl/DXDupe.pm +++ b/perl/DXDupe.pm @@ -47,7 +47,7 @@ sub check sub find { return 0 unless $_[0]; - return $d{$_[0]}; + return exists $d{$_[0]} ? $d{$_[0]} : 0; } sub add diff --git a/perl/Filter.pm b/perl/Filter.pm index f4089fcf..1c6b8589 100644 --- a/perl/Filter.pm +++ b/perl/Filter.pm @@ -358,7 +358,8 @@ sub load_dxchan { my $dxchan = shift; my $sort = lc shift; - my $in = shift ? 'in' : ''; + my $in = shift; + $in = $in ? 'in' : ''; # to cope with older perls that did not like a ternary expression with 'shift' as a conditional my $nossid = $dxchan->call; $nossid =~ s/-\d+$//; my $n = "$in$sort" . "filter"; diff --git a/perl/Spot.pm b/perl/Spot.pm index 64db9a72..316eb4b9 100644 --- a/perl/Spot.pm +++ b/perl/Spot.pm @@ -33,7 +33,7 @@ $maxspots = 100; # maximum spots to return $defaultspots = 10; # normal number of spots to return $maxdays = 100; # normal maximum no of days to go back $dirprefix = "spots"; -$duplth = 20; # the length of text to use in the deduping +$duplth = 15; # the length of text to use in the deduping $dupage = 1*3600; # the length of time to hold spot dups $maxcalllth = 12; # the max length of call to take into account for dupes $filterdef = bless ([ @@ -502,29 +502,57 @@ sub dup $call = substr($call, 0, $maxcalllth) if length $call > $maxcalllth; + my $dtext ; + my $l = length $text; + $dtext = qq{original:'$text'($l)} if isdbg('spottext'); + chomp $text; + $text =~ s/\%([0-9A-F][0-9A-F])/chr(hex($1))/eg; $text = uc unpad($text); + + $l = length $text; + $dtext .= qq{->afterhex: '$text'($l)} if isdbg('spottext'); + my @dubious; + if (isdbg('spottext')) { + (@dubious) = $text =~ /([?\x00-\x08\x0a-\x1F\x7B-\xFF]+)+/; + $dtext .= sprintf q{DUBIOUS '%s'}, join '', @dubious if @dubious; + } + my $otext = $text; # $text = Encode::encode("iso-8859-1", $text) if $main::can_encode && Encode::is_utf8($text, 1); $text =~ s/^\+\w+\s*//; # remove leading LoTW callsign - $text =~ s/\s{2,}[\dA-Z]?[A-Z]\d?$// if length $text > 24; + $text =~ s/\s{2,}[\dA-Z]?[A-Z]\d?$//g if length $text > 24; + $text =~ s/\x09+//g; $text =~ s/[\W\x00-\x2F\x7B-\xFF]//g; # tautology, just to make quite sure! - $text = substr($text, 0, $duplth) if length $text > $duplth; + $text = substr($text, 0, $duplth) if length $text > $duplth; + + $l = length $text; + $dtext .= qq{->final:'$text'($l)} if isdbg('spottext'); + my $ldupkey = $oldstyle ? "X|$call|$by|$node|$freq|$d|$text" : "X|$call|$by|$node|$qrg|$nd|$text"; - my $t = DXDupe::find($ldupkey); + my $t = 0; + $t = DXDupe::find($ldupkey); dbg("Spot::dup ldupkey $ldupkey t '$t'") if isdbg('spotdup'); - return 1 if $t > 0; + $dtext .= ' DUPE' if $t; + dbg("text transforms: $dtext") if length $text && isdbg('spottext'); + return 1 if $t > 0; DXDupe::add($ldupkey, $main::systime+$dupage) unless $just_find; + $otext = substr($otext, 0, $duplth) if length $otext > $duplth; $otext =~ s/\s+$//; if (length $otext && $otext ne $text) { $ldupkey = $oldstyle ? "X|$freq|$call|$by|$otext" : "X|$qrg|$call|$by|$otext"; $t = DXDupe::find($ldupkey); - dbg("Spot::dup ldupkey $ldupkey t '$t'") if isdbg('spotdup'); + dbg("Spot::dup (OTEXT) ldupkey $ldupkey t '$t'") if isdbg('spotdup'); + if (isdbg('spottext')) { + $dtext .= sprintf q{ DUBIOUS '%s'}, join '', @dubious if @dubious; + $dtext .= ' DUPE (OTEXT)' if $t; + dbg("text transforms: $dtext") if length $text; + } return 1 if $t > 0; DXDupe::add($ldupkey, $main::systime+$dupage) unless $just_find; }