diff --git a/satnogs.py b/satnogs.py index 070dfd5..6872c20 100644 --- a/satnogs.py +++ b/satnogs.py @@ -11,6 +11,7 @@ from satnogs_api_client.satnogs_api_client import DB_BASE_URL, get_paginated_end from satellite_tle import fetch_tles from skyfield.api import EarthSatellite, utc, load import numpy +#from pympler import muppy, summary scheduler = BackgroundScheduler() app = Flask(__name__) @@ -36,6 +37,9 @@ def getFuture(): print("Getting future Passes") global Observations global TLEs + global StationsPasses + TLEs = defaultdict(list) + StationsPasses = defaultdict(list) observations = defaultdict(dict) Start = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S%z') End = (datetime.utcnow() + timedelta(minutes=30)) @@ -45,7 +49,9 @@ def getFuture(): #for x in tqdm(obs): # observations[x["id"]] = x Observations = defaultdict(list) - for x in tqdm(passes): + for x in passes: + if x["ground_station"] == None: + continue #if x["id"] in observations: norad = int(x["tle1"].split(" ")[1].replace("U","")) try: @@ -60,12 +66,16 @@ def getFuture(): TLEs[norad] = EarthSatellite(x["tle1"], x["tle2"],x["tle0"]) StationsPasses[x["ground_station"]].append({"norad": norad, "transmitter": Transmitters[norad][x["transmitter"]], "start": start, "end": end, "id": x["id"]}) except Exception as e: + pass print("Error on observation number: " + str(x["id"]) + " "+str(norad)+" " + str(e)) - + del observations + del passes + del End + del Start print(str(len(Observations))+" Future passes found.") - + def GetGroundStations(): print("Getting Ground Stations") stations = get_paginated_endpoint("https://network.satnogs.org/api/stations/") @@ -75,6 +85,7 @@ def GetGroundStations(): def FindPasses(observations_): + print("Finding Future Passes") observations = observations_.copy() passses = [] observation = observations.pop(0) @@ -88,6 +99,7 @@ def FindPasses(observations_): passses.append(observation) observation = x passses.append(observation) + print("Finished Finding Future Passes") return passses @@ -114,21 +126,33 @@ def updateTransmitters(): global Transmitters global SatDescrip SatDescrip = {} + Transmitters = defaultdict(dict) print("Updating Transmitters") temp = requests.get("https://db.satnogs.org/api/transmitters/").json() - for x in tqdm(temp): + for x in temp: Transmitters[x["norad_cat_id"]][x["uuid"]] = [x["description"], [random.randint(0, 255), random.randint(0, 255), random.randint(0, 255), 255]] SatDescrip[x["norad_cat_id"]] = "" for x in Transmitters.keys(): for y in Transmitters[x].keys(): SatDescrip[x] += '
'+Transmitters[x][y][0]+'
' - + print("Finished Updating Transmitters") @scheduler.scheduled_job('interval', minutes=15)#hours=1) def updatePasses(): getFuture() updateCZML() - + # total = 0 + # for x in StationsPasses.keys(): + # total+=len(StationsPasses[x]) + # print("Total StationsPassses: " +str(total)) + # print("Total TLE: "+str(len(TLEs))) +# print("Total Passes: "+str(len(Passes))) + #print("Total StationsPasses: "+str(len(StationsPasses))) +# all_objects = muppy.get_objects() +# sum1 = summary.summarize(all_objects) +# summary.print_(sum1) +# del all_objects +# del sum1 @scheduler.scheduled_job('interval', hours=1) def updateStations(): @@ -139,6 +163,7 @@ def updateStations(): #@scheduler.scheduled_job('interval', minutes=5) def updateCZML(): + print("Updating CZML") global CZMLOnline global CZMLOffline global CZMLTesting @@ -152,7 +177,7 @@ def updateCZML(): CZMLOnline.append(onlineDoc) CZMLTesting.append(testingDoc) - for x in tqdm(Stations): + for x in Stations: color = [0, 230, 64, 255] if x["status"] == "Testing": color = [248, 148, 6, 255] @@ -183,7 +208,7 @@ def updateCZML(): else: CZMLOnline.append(station) AliveSats = [] - for x in tqdm(Observations.keys()): + for x in Observations.keys(): for y in Observations[x]: sat = {} sat["id"] = str(y["id"]) @@ -211,16 +236,22 @@ def updateCZML(): time += 60 temp = temp + timedelta(minutes=1) else: - if StationsByID[y["station"]]["status"] =="Testing": - CZMLTesting.append(sat) - else: - if StationsByID[y["station"]]["status"] == "Offline": - CZMLOffline.append(sat) + try: + # print(StationsByID) +# print(y["station"]) + if StationsByID[y["station"]]["status"] =="Testing": + CZMLTesting.append(sat) else: - CZMLOnline.append(sat) + if StationsByID[y["station"]]["status"] == "Offline": + CZMLOffline.append(sat) + else: + CZMLOnline.append(sat) + except: + print(y) + print(StationsByID[y["station"]]) AliveSats.append(str(y["id"])) - for x in tqdm(Observations.keys()): + for x in Observations.keys(): for y in Observations[x]: if str(y["id"]) in AliveSats: sat = {} @@ -233,7 +264,7 @@ def updateCZML(): CZMLOffline.append(sat) else: CZMLOnline.append(sat) - + print("Finished Updating CZML") @app.route("/") def index(): @@ -348,4 +379,4 @@ updateTransmitters() getFuture() updateCZML() scheduler.start() -app.run(use_reloader=False, host="0.0.0.0", port=5000) +app.run(use_reloader=False, host="0.0.0.0", port=8080) diff --git a/templates/rotating.html b/templates/rotating.html index 78dff9a..d569ad7 100644 --- a/templates/rotating.html +++ b/templates/rotating.html @@ -9,8 +9,8 @@