diff --git a/pypredict.py b/pypredict.py index 12b6652..843aea3 100755 --- a/pypredict.py +++ b/pypredict.py @@ -1,9 +1,11 @@ import subprocess import sys +import time + class missingSatellitePredictionError(Exception): def __init__(self): - self.description = "predict could not find aos, los of next pass" + self.description = "predict did not return data for the satellite" def __str__(self): return self.description @@ -11,14 +13,32 @@ class missingSatellitePredictionError(Exception): def aoslos(satname): lines = subprocess.check_output(['predict','-p',satname]).split("\n") try: - aosTime=int(lines[0].split(" ")[0]) - losTime=int(lines[-2].split(" ")[0]) + aosTime=int(lines[0].split()[0]) + losTime=int(lines[-2].split()[0]) if losTime>aosTime: return (aosTime,losTime) except Exception: pass raise missingSatellitePredictionError() +def groundtrack(satname, start=None, end=None): + if start is None: + start = int(time.time()) + if end is None: + end = start+60*60*24 + command = ['predict','-f',satname,str(start),str(end)+'m'] + lines = subprocess.check_output(command).split("\n") + result = [] + for line in lines: + try: + data = line.split() + if len(data)==12: # expect 12 columns, pick out time, lat, lon + result.extend([int(data[j]) for j in [0,6,7] ]) + except: + pass + if len(result)==0: + raise missingSatellitePredictionError() + return result