Upload current
This commit is contained in:
		
						commit
						9bc1ec3cfd
					
				|  | @ -0,0 +1,141 @@ | ||||||
|  | #Import Modules | ||||||
|  | from opensky_api import OpenSkyApi | ||||||
|  | from geopy.geocoders import Nominatim | ||||||
|  | import json | ||||||
|  | import time | ||||||
|  | from colorama import Fore, Back, Style  | ||||||
|  | #Various imports for output | ||||||
|  | from pushbullet import Pushbullet | ||||||
|  | pb = Pushbullet("***REMOVED***") | ||||||
|  | 
 | ||||||
|  | geolocator = Nominatim(user_agent="OpenSkyBot", timeout=5) | ||||||
|  | api = OpenSkyApi("", "") | ||||||
|  | 
 | ||||||
|  | #Set Plane ICAO | ||||||
|  | TRACK_PLANE = 'a4c79b' | ||||||
|  | 
 | ||||||
|  | #Pre Set Variables | ||||||
|  | geo_altitude = None | ||||||
|  | feeding = None | ||||||
|  | last_feeding = None    | ||||||
|  | #Begin Looping program | ||||||
|  | while True: | ||||||
|  | #Preset reseting variables | ||||||
|  |     invalid_Location = None | ||||||
|  |     longitude = None | ||||||
|  |     latitude = None | ||||||
|  | #Get API States for Plane | ||||||
|  |     planeData = api.get_states(icao24=TRACK_PLANE) | ||||||
|  |     print (Fore.YELLOW) | ||||||
|  |     print ("OpenSky Debug", planeData) | ||||||
|  |     print(Style.RESET_ALL)  | ||||||
|  | 
 | ||||||
|  | #Pull Variables from planeData | ||||||
|  |     if (planeData != None): | ||||||
|  |         for dataStates in planeData.states: | ||||||
|  |             longitude = (dataStates.longitude) | ||||||
|  |             latitude = (dataStates.latitude) | ||||||
|  |             on_ground = (dataStates.on_ground) | ||||||
|  |             geo_altitude = (dataStates.geo_altitude) | ||||||
|  |              | ||||||
|  |             print (Fore.BLUE) | ||||||
|  |             print ("On Ground: ", on_ground) | ||||||
|  |             print ("Latitude: ", latitude) | ||||||
|  |             print ("Longitude: ", longitude) | ||||||
|  |             print ("GEO Alitude: ", geo_altitude) | ||||||
|  |          | ||||||
|  |              | ||||||
|  |     #Lookup Location of coordinates  | ||||||
|  |         if not((longitude == None) and (latitude == None)): | ||||||
|  | 
 | ||||||
|  |             combined = f"{latitude}, {longitude}" | ||||||
|  |             location = geolocator.reverse(combined) | ||||||
|  |             print (Fore.YELLOW) | ||||||
|  |             print ("Geopy debug: ", location.raw) | ||||||
|  |             print(Style.RESET_ALL)  | ||||||
|  |             feeding = True  | ||||||
|  |         else: | ||||||
|  |             print (Fore.RED + 'Not Feeding Location') | ||||||
|  |             feeding = False | ||||||
|  |             print(Style.RESET_ALL)  | ||||||
|  |         print ("Feeding: ", feeding) | ||||||
|  |     #Figure if valid location, valid being geopy finds a location | ||||||
|  |         if feeding: | ||||||
|  |             try: | ||||||
|  |                 geoError = location.raw['error'] | ||||||
|  |             except KeyError: | ||||||
|  |                 invalid_Location = False | ||||||
|  |                 geoError = None | ||||||
|  |             else: | ||||||
|  |                 invalid_Location = True | ||||||
|  |          | ||||||
|  |          | ||||||
|  |      | ||||||
|  |         if invalid_Location: | ||||||
|  |             print (Fore.RED) | ||||||
|  |             print ("Invalid Location: ", invalid_Location) | ||||||
|  |             print (geoError) | ||||||
|  |             print ("Likely Over Water or Invalid Location") | ||||||
|  |             print(Style.RESET_ALL) | ||||||
|  |              | ||||||
|  | 
 | ||||||
|  |     #Convert Full address to sep variables | ||||||
|  |         elif feeding: | ||||||
|  |             address = location.raw['address'] | ||||||
|  |             country = address.get('country', '') | ||||||
|  |             state = address.get('state', '') | ||||||
|  |             county = address.get('county', '') | ||||||
|  |             city = address.get('city', '') | ||||||
|  |              | ||||||
|  |              | ||||||
|  |             print (Fore.YELLOW) | ||||||
|  |             print ("Address Fields debug: ", address) | ||||||
|  |             print(Style.RESET_ALL) | ||||||
|  |             print (Fore.GREEN) | ||||||
|  |             print("Entire Address: ", location.address) | ||||||
|  |             print () | ||||||
|  |             print ("Country: ", country) | ||||||
|  |             print ("State: ", state) | ||||||
|  |             print ("City: ", city) | ||||||
|  |             print ("County: ", county) | ||||||
|  |             print(Style.RESET_ALL) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         #Check if tookoff | ||||||
|  |         tookoff = bool(last_feeding is False and feeding and on_ground is False and invalid_Location is False and geo_altitude < 10000) | ||||||
|  |         print ("Tookoff Just Now:", tookoff) | ||||||
|  | 
 | ||||||
|  |         #Check if Landed | ||||||
|  |         landed = bool((last_feeding and feeding is False and invalid_Location is False and last_geo_altitude < 10000) or (on_ground and last_on_ground is False)) | ||||||
|  |         print ("Landed Just Now:", landed) | ||||||
|  |          | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     #Takeoff Notifcation and Landed | ||||||
|  |         if tookoff: | ||||||
|  |             tookoff_message = ("Just took off from" + " " + city + ", " + state + ", " + country) | ||||||
|  |             print (tookoff_message) | ||||||
|  |             push = pb.push_note("Elon's Jet", tookoff_message) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         if landed: | ||||||
|  |             landed_message = ("Landed just now at" + " " + city + ", " + state + ", " + country) | ||||||
|  |             print (landed_message) | ||||||
|  |             push = pb.push_note("Elon's Jet", landed_message) | ||||||
|  |     | ||||||
|  | 
 | ||||||
|  |         last_feeding = feeding | ||||||
|  |         last_geo_altitude = geo_altitude | ||||||
|  |         last_on_ground = on_ground | ||||||
|  |     else: | ||||||
|  |         print ("Rechecking OpenSky") | ||||||
|  |         planeDataMSG = str(planeData) | ||||||
|  |         push = pb.push_note("Rechecking OpenSky, OpenSky Debug->", planeDataMSG) | ||||||
|  | 
 | ||||||
|  |     print (Back.MAGENTA, "--------------------------------------------------------------------") | ||||||
|  |     print(Style.RESET_ALL) | ||||||
|  |     time.sleep(15) | ||||||
		Loading…
	
		Reference in New Issue