From c5e531facba84ff287d41d141e4f3de3d6c8c02a Mon Sep 17 00:00:00 2001 From: wgaylord Date: Sat, 22 Dec 2018 01:33:23 -0600 Subject: [PATCH] Added new transmitter information! --- satnogs.py | 29 ++++++++++++++++++++++++++--- satnogs_api_client.pyc | Bin 0 -> 5049 bytes static/Worker.js | 6 +++++- templates/map.html | 39 ++++++++++++++++++++++++++++----------- 4 files changed, 59 insertions(+), 15 deletions(-) create mode 100644 satnogs_api_client.pyc diff --git a/satnogs.py b/satnogs.py index d128593..a35d1b0 100644 --- a/satnogs.py +++ b/satnogs.py @@ -2,6 +2,7 @@ from datetime import datetime , timedelta import requests from flask import Flask , render_template,redirect,url_for import json +import random from apscheduler.schedulers.background import BackgroundScheduler from satnogs_api_client import fetch_satellites, DB_BASE_URL,fetch_tle_of_observation from satellite_tle import fetch_tles @@ -14,6 +15,7 @@ Passes = [] Occuring_sats = {} Stations = [] TLEs = {} +Transmitters = {} class Pass: id = 0 @@ -61,6 +63,7 @@ def getActive(): temp.start = datetime.strptime(x["start"],'%Y-%m-%dT%H:%M:%Sz') temp.end = datetime.strptime(x["end"],'%Y-%m-%dT%H:%M:%Sz') temp.ground_station = x["ground_station"] + temp.transmitter = x["transmitter"] temp.norad = str(x["norad_cat_id"]) try: temp.satellite = requests.get("https://db.satnogs.org/api/satellites/"+str(x["norad_cat_id"])).json() @@ -98,6 +101,18 @@ def GetGroundStations(): return stations +@scheduler.scheduled_job('interval',days=5) +def updateTransmitters(): + global Transmitters + print "Updating Transmitters" + temp = requests.get("https://db.satnogs.org/api/transmitters/").json() + for x in temp: + if str(x["norad_cat_id"]) in Transmitters.keys(): + Transmitters[str(x["norad_cat_id"])][x["uuid"]] = [x["description"],"#"+str("%06x" % random.randint(0, 0xFFFFFF))] + else: + Transmitters[str(x["norad_cat_id"])]={} + Transmitters[str(x["norad_cat_id"])][x["uuid"]] = [x["description"],"#"+str("%06x" % random.randint(0, 0xFFFFFF))] + #print Transmitters @scheduler.scheduled_job('interval',minutes=3) def updatePasses(): @@ -153,11 +168,18 @@ def api_active_stations(): @app.route('/stations_from_sat/') def api_occuring_observations(norad): obs = [] + trans = [] for x in Passes: if x.norad == norad: - obs.append(x.ground_station) - - return json.dumps(obs) + obs.append([x.ground_station,Transmitters[norad][x.transmitter][1]]) + trans.append(x.transmitter) + #print Transmitters[norad].values() + + transList = [] + for x in set(trans): + transList.append(Transmitters[norad][x]) + #print transList,norad + return json.dumps([obs,transList]) @app.route('/occuring_sats') def api_occuring_sats(): @@ -170,5 +192,6 @@ def api_occuring_sats(): updatePasses() updateStations() updateTLE() +updateTransmitters() scheduler.start() app.run(use_reloader=False,host = "0.0.0.0",port=5001) \ No newline at end of file diff --git a/satnogs_api_client.pyc b/satnogs_api_client.pyc new file mode 100644 index 0000000000000000000000000000000000000000..91a2e0bcb2f30ce869fb71493d419f57f5680b25 GIT binary patch literal 5049 zcmcIo(QX^Z6}_{RC{d<@977$=iFJ*lw=eIDv9Rs?#%4W?7iold)KvpEiU}y zgSEY`RDS_}e=bJsKVc;JXQVGOFtTgJ@H&uwAiIH%!LG?}O%k*-lFZ2NtR%CtTbHCR zyK|hJ%*j`{xgqI-B=c%tQ@f#dQ|$${7bUqSUy1B4X=hVAuS>G1oy(Fesc}P+>uRh> ziY=CP+D-1Y)4G8}XaB}u%fNC=Xoh8$yXat)cU@NG9s4@^4xJm?yX|(Ky5AM$@jFTS z#fFVtUi9onQTFVs7w4QA|Mt{)vVUgiJ7Y$QC&cD$>vLV?V#2=B|z&teECWi-VyC?i#E?{4~ONnPGW$mbyw3 zW5q>W@)*%D?xhh9)Fyu0_oF*9-KohsOD`>>5n1!Gj+%`7?TB|{q z9-?!6kP+a0Tp$Jr!O4sq2?JHWB6y;_CN7XaqsLSsp2Ygg85z$Cp7&&yQ61MA;XjES z040HZja%xnjR8M~iz-g`BW(73+{S~ni+yY<~jFYGvyC_RO zd_MjWLR2~$cs%@c>1)E2F@KK`eFFxN`T46dR)i%YYdH3CAZ3k*|I|Ez1Q;BGx49;o z={-6=I6B5=<0p>cojRW<>-^-tEYVvoEtIx_rSJ7pKxSBOwQ*q?rn=Nji||tn04iS@(kK*BQ9oDo@eV9fJ69VKD2;xFszt3PHK$X{X z6{+$*1&e{KQO*EjgepNSVIWc$1F3=23^uQUY+MK=W6)7Hbc#H+#M{nsHXLSoZ@pI* zqdZ{(frPEU$q8?6_@Fa>RnV((+h)KQ(61Z=nUr;!{Qo-yLT)-0d@|N=t;q{}g9twU zj=(rOW*tk8vwfH!exHk86%y94xJSadjmh1I7_`KS1ONlmlBuIrNCc~9BJXs)GWQM) z#NSsSBxOJ!vJ~;8RLuudK|;e+rSv?*L9**K9H)842ZY!=$2%4O?FSPLRUUf(6RjbA zd}W@a7&YDkaz$CGw! z#eyj0u!OxgEYq!b*IOHJzjbfF+`8kfHhV37{qB0kw4(N%^^9FDCZs9Cs8UXZ zQ<>^ectHnP`l)={G%mY`N;krBs4NWExsHmaQbE%f`QQkasU!Om?$8bTx2h6 zAQ^WLQTp*fm>;=*8r?Z__1;ye>?_#LBZM0k2h+Lnw-~d85bM4MK4?L*mEfki=@G;1 zGC>TF2YgiJyrQQIqcHq9Tz@{ki?0@^p8AZrit(_pPBSX&pplLE zJ{!J)(eTG;ycDZCe8@X^8&2YXV;635;(az0X??U|{H$NZiHF8j6);pTo;;eU)L+r# zrFCw>%vGO-;JUemZ;P7i2#W~+k>f@s-eN;sN%#&MK9#TVIWK%0jaF(XGNxbF!XI*! zTdU_jDMxAeU3UF|&0B0py^z&(_)|7NWAg!Name: "+name+"
Norad: "+norad+""); Lines[norad] = {} - e.data[3].forEach(function(x){ - Lines[norad][x] = new L.Polyline([[Stations[x]._latlng.lat,Stations[x]._latlng.lng],[satPos[0],satPos[1]]], {color: '#'+norad.toString(16).repeat(2).substr(0,6),weight: 3,opacity: 1,smoothFactor: 1}); - Lines[norad][x].addTo(mymap) - }); + + + } + + popupText = "Name: "+name+"
Norad: "+norad+"
Station Count: "+e.data[3].length+"
" - Object.keys(Lines[norad]).forEach(function(x){ - if (e.data[3].includes(Number(x))){ - Lines[norad][x]._latlngs[1]= {"lat":satPos[0],"lng":satPos[1]} + e.data[4].forEach(function(x){ + //console.log(x + " "+norad) + popupText = popupText + '
'+x[0]+"

" + }) + Sats[norad].bindPopup(popupText) + Sats[norad]._popup.setContent(popupText) + + temp = [] + e.data[3].forEach(function(x){ + temp.push(x[0]) + }) + + e.data[3].forEach(function(x){ + if (Object.keys(Lines[norad]).includes(Number(x[0]))){ + Object.keys(Lines[norad]).forEach(function(y){ + if (temp.includes(Number(y))){ + Lines[norad][y]._latlngs[1]= {"lat":satPos[0],"lng":satPos[1]} }else{ - Lines[norad][x].removeFrom(mymap) - delete Lines[norad][x] + Lines[norad][x[0]].removeFrom(mymap) + delete Lines[norad][x[0]] } + + })}else{Lines[norad][x[0]] = new L.Polyline([[Stations[x[0]]._latlng.lat,Stations[x[0]]._latlng.lng],[satPos[0],satPos[1]]], {color: x[1],weight: 3,opacity: 1,smoothFactor: 1}); + Lines[norad][x[0]].addTo(mymap)}; })