]> scm.dxcluster.org Git - spider.git/blob - cmd/show/sun.pl
1e9b9b06f84716ffc75aa0167057f414ca04dd20
[spider.git] / cmd / show / sun.pl
1 #!/usr/bin/perl
2 #
3 # show sunrise and sunset times for each callsign or prefix entered
4 #
5 # 1999/11/9 Steve Franke K9AN
6 #
7
8 my ($self, $line) = @_;
9 my @list = split /\s+/, $line;
10
11 my $l;
12 my @out;
13 my ($lat, $lon);              # lats and longs in radians
14 my ($sec, $min, $hr, $day, $month, $yr) = (gmtime($main::systime))[0,1,2,3,4,5];
15 $month++;
16 $yr += 1900;
17
18 my @in;
19
20 if (@list) {
21         foreach $l (@list) {
22                 my $user = DXUser->get_current(uc $l);
23                 if ($user && $user->lat && $user->long) {
24                         push @in, [$user->qth, $user->lat * $d2r, $user->long * -$d2r, uc $l ];
25                 } else {
26                         # prefixes --->
27                         my @ans = Prefix::extract($l);
28                         next if !@ans;
29                         my $pre = shift @ans;
30                         my $a;
31                         foreach $a (@ans) {
32                                 $lat = $a->{lat};
33                                 $lon = $a->{long};
34                                 $lat *= $d2r;
35                                 $lon *= -$d2r;
36                                 push @in, [ $a->name, $lat, $lon, $pre ];
37                         }
38                 }
39         }
40 } else {
41         if ($self->user->lat && $self->user->long) {
42                 push @in, [$self->user->qth, $self->user->lat * $d2r, $self->user->long * -$d2r, $self->call ];
43         } else {
44                 push @in, [$main::myqth, $main::mylatitude * $d2r, $main::mylogitude * -$d2r, $main::mycall ];
45         }
46 }
47
48 foreach $l (@in) {
49         my $string=Sun::riseset($yr,$month,$day,$l->[1],$l->[2]);
50         push @out,sprintf("%-2s   %s   %s",$l->[3],$l->[0],$string);
51 }
52
53                         
54
55 return (1, @out);