X-Git-Url: http://www.dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=cmd%2Fshow%2Fsun.pl;h=eacd85d68c151089198084840b0234617c252ffc;hb=229eee2688f9e4a1f5489b7bfafd7c32bfc12548;hp=07172ce05b34cafaa794bf840b9d7d6a2fc51fa0;hpb=55056d76ffafa69782a23bf830a0dc9e8c161838;p=spider.git diff --git a/cmd/show/sun.pl b/cmd/show/sun.pl index 07172ce0..eacd85d6 100644 --- a/cmd/show/sun.pl +++ b/cmd/show/sun.pl @@ -4,14 +4,34 @@ # # 1999/11/9 Steve Franke K9AN # 2000/10/27 fixed bug involving degree to radian conversion. +# 2001/09/15 accept prefix/call and number of days from today (+ or -). +# e.g. sh/moon 2 w0 w9 shows rise/set 2 days hence for w0, w9 +# sh/moon w0 w9 2 same thing +# az and el are shown only when day offset is zero (i.e. today). my ($self, $line) = @_; -my @list = split /\s+/, $line; +my @f = split /\s+/, $line; -my $l; my @out; -my ($lat, $lon); # lats and longs in radians -my ($sec, $min, $hr, $day, $month, $yr) = (gmtime($main::systime))[0,1,2,3,4,5]; +my $f; +my $l; +my $n_offset; +my @list; + +while ($f = shift @f) { + if (!$n_offset) { + ($n_offset) = $f =~ /^([-+]?\d+)$/; + next if $n_offset; + } + push @list, $f; +} +$n_offset = 0 unless defined $n_offset; +$n_offset = 0 if $n_offset > 365; # can request moon rise/set up to 1 year ago or from now... +$n_offset = 0 if $n_offset < -365; + +my ($lat, $lon); # lats and longs in radians +my ($sec, $min, $hr, $day, $month, $yr) = (gmtime($main::systime+$n_offset*24*60*60))[0,1,2,3,4,5]; + $month++; $yr += 1900; @@ -19,7 +39,7 @@ my @in; if (@list) { foreach $l (@list) { - my $user = DXUser->get_current(uc $l); + my $user = DXUser::get_current(uc $l); if ($user && $user->lat && $user->long) { push @in, [$user->qth, $user->lat, -$user->long, uc $l ]; } else { @@ -43,13 +63,22 @@ if (@list) { } } -push @out, $self->msg('sun'); +if ( !$n_offset ) { + push @out, $self->msg('sun_with_azel'); +} else { + push @out, $self->msg('sun'); +} + foreach $l (@in) { - my ($rise, $set, $az, $dec )=Sun::rise_set($yr,$month,$day,$hr,$min,$l->[1],$l->[2],0); + my ($dawn, $rise, $set, $dusk, $az, $dec )=Sun::rise_set($yr,$month,$day,$hr,$min,$l->[1],$l->[2],0); + $l->[3] =~ s{(-\d+|/\w+)$}{}; - push @out,sprintf("%-6.6s %-30.30s %s %s %6.1f %6.1f ", $l->[3], $l->[0], $rise, $set, $az, $dec); + if ( !$n_offset ) { + push @out,sprintf("%-6.6s %-30.30s %02d/%02d/%4d %s %s %6.1f %6.1f", $l->[3], $l->[0], $day, $month, $yr, $rise, $set, $az, $dec); + } else { + push @out,sprintf("%-6.6s %-30.30s %02d/%02d/%4d %s %s", $l->[3], $l->[0], $day, $month, $yr, $rise, $set); + } } - return (1, @out);