From 7182433462545ff528b42eaeadd6fe06b27a78ec Mon Sep 17 00:00:00 2001 From: Jack Sweeney Date: Wed, 7 Oct 2020 02:47:54 +0000 Subject: [PATCH 1/2] Fix anonymous OpenSky API access --- defOpenSky.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/defOpenSky.py b/defOpenSky.py index df7b528..0d40bd7 100644 --- a/defOpenSky.py +++ b/defOpenSky.py @@ -1,10 +1,10 @@ def pullOpenSky(planes): import configparser - config = configparser.ConfigParser() - config.read('mainconf.ini') + main_config = configparser.ConfigParser() + main_config.read('mainconf.ini') from opensky_api import OpenSkyApi planeData = None - opens_api = OpenSkyApi(config.get('OPENSKY', 'USERNAME'), config.get('OPENSKY', 'PASSWORD')) + opens_api = OpenSkyApi(username= None if main_config.get('OPENSKY', 'USERNAME').upper() == "NONE" else main_config.get('OPENSKY', 'USERNAME'), password= None if main_config.get('OPENSKY', 'PASSWORD').upper() == "NONE" else main_config.get('OPENSKY', 'PASSWORD').upper()) failed = False icao_array = [] for key, obj in planes.items(): From 9bdf301a77b77f330a968865e863e10f4d45ca34 Mon Sep 17 00:00:00 2001 From: Jack Sweeney Date: Wed, 7 Oct 2020 03:26:44 +0000 Subject: [PATCH 2/2] Update README, move Pseudo --- PseudoCode.md | 15 +++++++++++++++ README.md | 38 ++++++++++---------------------------- 2 files changed, 25 insertions(+), 28 deletions(-) create mode 100644 PseudoCode.md diff --git a/PseudoCode.md b/PseudoCode.md new file mode 100644 index 0000000..33c573d --- /dev/null +++ b/PseudoCode.md @@ -0,0 +1,15 @@ +### How It works + +- Takes data about every ~30 seconds from OpenSky Network or ADS-B Exchange and compares it to previous data with what I've defined as a landing or takeoff event. + +- A takeoff event is the plane is not on the ground, below 10k feet and ((previously no data and now getting data) or was previously on the ground). + +- A landing event is previously below 10k feet and (previously getting data, no longer getting data and previously not on the ground) or (now on the ground and previously not on the ground). + +- Given the coordinates of the aircraft the coordinates are reverse looked up for a location name. (GeoPY Nomination Geolocator) + +- At the time of takeoff a takeoff time is set, which is referenced in the landing event to calculate approximate total flight time. + +- A Static map image is created based off location name. (Google Static Maps API) or a screenshot of is created using Selenium/ChromeDriver The selected plane is locked on in the screenshot. + +- If the landing event and takeoff events are true, It will output to any of the following built-in output methods. (Twitter, Pushbullet, and Discord all of which can be setup and enabled in each planes config file. Outputs the location name, map image and flight time on landing. (Tweepy and "Pushbullet.py" and Discord_webhooks) \ No newline at end of file diff --git a/README.md b/README.md index 3df1103..08fbd8c 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,11 @@ [![Codacy Badge](https://api.codacy.com/project/badge/Grade/c4e1d839eec3468cadfe351d64dc1ac4)](https://app.codacy.com/manual/Jxck-S/plane-notify?utm_source=github.com&utm_medium=referral&utm_content=Jxck-S/plane-notify&utm_campaign=Badge_Grade_Settings) [![GPLv3 License](https://img.shields.io/badge/License-GPL%20v3-yellow.svg)](https://opensource.org/licenses/) -Notify If a Selected Plane has taken off or landed using Python with OpenSky or ADS-B Exchange Data, outputs location of takeoff location of landing and takeoff by reverse lookup of coordinates. +Notify if configured planes have taken off or landed using Python with OpenSky or ADS-B Exchange Data, outputs location of takeoff location of landing and takeoff by reverse lookup of coordinates. ### Branches -Their are two branches of this program single is the original only supports one plane works with OpenSky and ADSBX. Multi branch is the new version supports multiple planes currently only works with ADSBX, will eventually implement OpenSky. Your current viewing multi. +Their are two branches of this program single is the original only supports one plane works with OpenSky and ADSBX. Multi branch is the new version supports multiple planes, mainly built around being based on ADSBX data, OpenSky data in this version may have issues, didn't test much. Your current viewing multi. ### Discord Output Example @@ -17,25 +17,13 @@ Their are two branches of this program single is the original only supports one [ExImages](./ExImages) -## Why I made it +### Background -Made it so I could track Elon Musk's Jet and share with others of his whereabouts on Twitter. [![Twitter Follow](https://img.shields.io/twitter/follow/ElonJet.svg?style=social)](https://twitter.com/ElonJet) +I made this program so I could track Elon Musk's Jet and share with others of his whereabouts on Twitter. [![Twitter Follow](https://img.shields.io/twitter/follow/ElonJet.svg?style=social)](https://twitter.com/ElonJet) I have now Expanded and run multiple accounts for multiple planes, a list of the accounts here [plane-notify Twitter List](https://twitter.com/i/lists/1307414615316467715) -## How It works +### [ How It Works](PseudoCode.md) -- Takes data about every 15 seconds from OpenSky Network or ADS-B Exchange and compares it to previous data with what I've defined as a landing or takeoff event. - -- A takeoff event is the plane is not on the ground, below 10k feet and ((previously no data and now getting data) or was previously on the ground). - -- A landing event is previously below 10k feet and (previously getting data, no longer getting data and previously not on the ground) or (now on the ground and previously not on the ground). - -- Given the coordinates of the aircraft the coordinates are reverse looked up for a location name. (GeoPY Nomination Geolocator) - -- At the time of takeoff a takeoff time is set, which is referenced in the landing event to calculate approximate total flight time. - -- A Static map image is created based off location name. (Google Static Maps API) or a screenshot of is created using Selenium/ChromeDriver The selected plane is locked on in the screenshot. - -- If the landing event and takeoff events are true, It will output to any of the following built-in output methods. (Twitter, Pushbullet, and Discord all of which can be setup and enabled in config.ini). Outputs the location name, map image and takeoff time if landing. (Tweepy and "Pushbullet.py" and Discord_webhooks) +## Setup / Install ### Make sure Python/PIP is installed @@ -55,25 +43,19 @@ pip3 install ptyz ### Install Selenium / ChromeDriver or setup Google Static Maps -Selenium/ChromeDriver is used to take a screenshot of the plane on globe.adsbexchange.com. Or use Google Static Maps, which can cost money if over used(No tutorial use https://developers.google.com/maps/documentation/maps-static/get-api-key to get to a key). +Selenium/ChromeDriver is used to take a screenshot of the plane on globe.adsbexchange.com. Or use Google Static Maps, which can cost money if over used(No tutorial use to get to a key). #### 1. Chromium -``` -sudo apt-get install chromium -``` + sudo apt-get install chromium #### 2. ChromeDriver -``` -sudo apt-get install chromium-driver -``` + sudo apt-get install chromium-driver #### 3. Selenium -``` -pip install -U selenium -``` + pip install -U selenium ### Install Pushbullet, Tweepy, and Discord optional output methods already implemented in code, only install the ones you want to use.