When you click on "Telescope GoTo" over many types of objects in Sky View (XEphem), a command is sent to put up a new browser window to fetch a page of information about the object from various web sites. It really makes things a bit easier when useful information is supplied in the browser windows.

As always, suggestions for improvements are appreciated.

#!/usr/bin/perl $| = 1; $caching = 1; $browser = "mozilla"; $cachedir = "/home/tekniko/.xeseds"; $wget = "/usr/bin/wget"; # --------------------------- $messierurl = "http://www.seds.org/messier/m/"; $ngcurl = "http://www.seds.org/~spider/ngc/ngc.cgi?"; #$ngcurl = "http://www.seds.org/messier/xtra/ngc/n"; $cometurl = "http://cfa-www.harvard.edu/iau/Ephemerides/Comets/"; $asteroidurl = "http://ssd.jpl.nasa.gov/cgi-bin/da?"; $planeturl = "http://maps.jpl.nasa.gov/"; $saturl = "https://www.TBS-satellite.com/cgi-bin/wwwwais?keywords="; $args = @ARGV; $port = 0; $loc_fifo = 0; $in_fifo = 0; for ($i = 0; $i < $args; $i++) { $switch = $ARGV[$i]; $i++; if ($switch eq "-m") { $in_fifo = $ARGV[$i]; } elsif ($switch eq "-g") { $loc_fifo = $ARGV[$i]; } elsif ($switch eq "-t") { $port = $ARGV[$i]; } } mkdir ($cachedir) if ( ! -e $cachedir && $caching); chdir ($cachedir) if ($caching); open FIFO, "+<$loc_fifo" or die "$loc_fifo: $!\n"; while (true) { $data=0; $url=0; sysread (FIFO, $data, 1024); print "DATA: $data\n"; if ($data =~ /,E, /) { print "Got EarthSat!\n"; ($fullname, @therest) = split(/,/, $data); ($keyword, @therest) = split(/\s+/, $fullname); print " -> URL: $saturl$keyword\n"; $url = "$saturl$keyword"; } elsif ($data =~ /,f/) { print "Got Seds!\n"; ($name, @stuff) = split /,\s*/, $data; if ($name =~ /M(\d+)/) { $url = $messierurl . sprintf("m%03d.html", $1); } if ($name =~ /NGC (\d+)/) { $url = $ngcurl . "ngc$1"; } if ($name =~ /IC (\d+)/) { $url = $ngcurl . "ic$1"; } if ($caching) { #$command = "(cd $cachedir && $wget -c -E -k -K -p $url)"; $command = "(cd $cachedir && $wget -p -E -K -k -c $url)"; print " -> $command\n"; $filename = $url; $filename =~ s/~/\%7E/g; if ($filename !~ /.html$/) { $filename .= ".html"; } $filename = $cachedir."/".substr($filename, 7); # $filename =~ s/\?/\\?/g; print "Checking for $filename...\n"; if ( -e $filename) { print " -> found it\n"; } else { print " -> NOT Found\n"; } system($command) if ( ! -e $filename ); print " -> Loading file $filename\n"; $url = $filename; } } elsif ($data =~ /,e,/ || $data =~ /,p,/) { print "Got Comet!\n"; if ($data =~ /^C\// || $data =~ /^P\//) { ($junkyear, $desig, @therest) = split(/\s+/, $data); ($junk, $year) = split(/\//, $junkyear); print " -> URL: $cometurl$year$desig.html"; $url = "$cometurl$year$desig.html"; } elsif ($data =~ /P\//) { ($comet, @therest) = split(/\//, $data); ($cometnum, $junk) = split(/P/, $comet,2); if ($cometnum < 10) { $zeroes = "000"; } elsif ($cometnum < 100) { $zeroes = "00"; } elsif ($cometnum < 1000) { $zeroes = "0"; } print " -> URL: $cometurl$zeroes$comet.html"; $url = "$cometurl$zeroes$comet.html"; } else { print " -> Must be an asteroid\n"; ($asternumber, @therest) = split(/\s+/, $data); print " -> URL: $asteroidurl$asternumber\n"; $url = "$asteroidurl$asternumber"; } } elsif ($data =~ /,P/) { print "Got Planet!\n"; ($planet, $junk) = split(/,/, $data); $planet =~ tr/[A-Z]/[a-z]/; print " -> $planeturl$planet.html"; $url = "$planeturl$planet.html"; } else { print "Unknown!\n"; } if ($url) { $cmd = "$browser $url"; $pid = fork(); exec($cmd) if (!$pid); } }