mirror of https://github.com/XEphem/XEphem.git
175 lines
5.3 KiB
Perl
175 lines
5.3 KiB
Perl
#!/usr/bin/perl
|
|
#
|
|
# xeseds2.pl version 2.1
|
|
#
|
|
# Original program by unknown author
|
|
# cleaned up and fixed for xephem 3.5 and konq by twalker@bigpond.net.au
|
|
# It now forks a new konqueror window with each "goto"
|
|
# Treat as GPL unless 'unknown author' has complaints :)
|
|
#
|
|
# UPDATED: 20020425
|
|
#
|
|
# added comet, asteroid, planet, and satellite links. We are now pulling out a lot more info :)
|
|
# Some of the links mightn't be the best resource and if you know of better ones and
|
|
# could be bothered to figure out their syntax then sent me back an edited copy.
|
|
#
|
|
# We have caching support!. When you access a messier object or an NGC object from seds
|
|
# we are pulling the object down with wget and then loading up that html page in konqueror
|
|
# .. using this method you can pull pages down before you go out and access them again in the
|
|
# field.
|
|
#
|
|
# bloody hell, this script is really starting to need documentation!
|
|
#
|
|
# Okay you can revert to original behaviour by setting caching=0. This means you have to be
|
|
# online to access anything. i
|
|
#
|
|
# When using caching, set your cache dir to wherever.. ~/.xeseds might work for you,
|
|
# it might not, I found it simpler just to give an absolute.
|
|
#
|
|
# wget is required for caching support.
|
|
#
|
|
# Beyond that I'm really interested in finding a 1/2 decesnt comet resource.
|
|
# thessd.jpl.nasa.gov supports comets but not in anyway I could figure out on the command line.
|
|
# Seems to only like POST requests. The planet resource is quite dull :) A new one there
|
|
# might be useful. Finally there may be some comet/asteriods name's I haven't come up with.
|
|
# I'm basically looking at whatever output the xephem fifo dishes up and then searching
|
|
# for an online resource that takes that kind of input... I found 3 ways of dishing up
|
|
# a comet so far, so if there are any other let me know.
|
|
#
|
|
# p.s. when you are using seds caching konq is going to take a while to come up as wget
|
|
# does it's run before loading konq on the local file. I could do them both in tandem but it'
|
|
# going to require downloading double the info, which doesn't make sense :)
|
|
#
|
|
# Tim Walker, twalker@bigpond.net.au
|
|
|
|
$| = 1;
|
|
|
|
$caching = 1;
|
|
|
|
$browser = "konqueror";
|
|
$cachedir = "/home/ecdowney/.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);
|
|
}
|
|
}
|