{"id":13585367,"url":"https://github.com/Jxck-S/plane-notify","last_synced_at":"2025-04-07T09:34:43.787Z","repository":{"id":37242595,"uuid":"270504039","full_name":"Jxck-S/plane-notify","owner":"Jxck-S","description":"Notify if a selected plane has taken off or landed using ADS-B data. Compares older data to newer data to determine if a landing or takeoff has occurred. As well as nav modes, emergency squawk and resolution advisory notifications. Can output to Twitter, Discord, Mastodon, and Telegram","archived":false,"fork":false,"pushed_at":"2024-06-06T19:35:34.000Z","size":2072,"stargazers_count":2501,"open_issues_count":25,"forks_count":432,"subscribers_count":59,"default_branch":"multi","last_synced_at":"2024-10-29T17:52:40.736Z","etag":null,"topics":["acas","ads-b","adsb","adsbexchange","adsbx","airport","emergency-squawk","land","opensky","opensky-api","opensky-network","plane","resolutionadviosry","squawk","takeoff","tcas"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Jxck-S.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-06-08T02:46:59.000Z","updated_at":"2024-10-28T16:37:35.000Z","dependencies_parsed_at":"2023-02-09T12:31:46.468Z","dependency_job_id":"ceb8afca-a0d6-45a7-9d81-d378d44c896e","html_url":"https://github.com/Jxck-S/plane-notify","commit_stats":{"total_commits":403,"total_committers":30,"mean_commits":"13.433333333333334","dds":"0.24813895781637718","last_synced_commit":"0031c66e4c64a262ced517f19ca4468ded33a1dc"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jxck-S%2Fplane-notify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jxck-S%2Fplane-notify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jxck-S%2Fplane-notify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jxck-S%2Fplane-notify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jxck-S","download_url":"https://codeload.github.com/Jxck-S/plane-notify/tar.gz/refs/heads/multi","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223103579,"owners_count":17088002,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["acas","ads-b","adsb","adsbexchange","adsbx","airport","emergency-squawk","land","opensky","opensky-api","opensky-network","plane","resolutionadviosry","squawk","takeoff","tcas"],"created_at":"2024-08-01T15:04:54.109Z","updated_at":"2024-11-06T03:30:58.724Z","avatar_url":"https://github.com/Jxck-S.png","language":"Python","funding_links":[],"categories":["Python","Software"],"sub_categories":["Social"],"readme":"# plane-notify\n\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/c4e1d839eec3468cadfe351d64dc1ac4)](https://app.codacy.com/manual/Jxck-S/plane-notify?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=Jxck-S/plane-notify\u0026utm_campaign=Badge_Grade_Settings)\n[![GPLv3 License](https://img.shields.io/badge/License-GPL%20v3-yellow.svg)](https://opensource.org/licenses/)\n\nNotify if configured planes have taken off or landed using Python with \u003ca href=\"https://opensky-network.org/\"\u003eOpenSky\u003c/a\u003e(free) or \u003ca href=\"https://www.adsbexchange.com/\"\u003eADSBExchange\u003c/a\u003e Data(paid, declining data, and run by clowns), outputs location of takeoff location of landing and takeoff by reverse lookup of coordinates.\n\n### Discord Output Example\n\n![Discord Output Example](./ExImages/DiscordEX2.png?raw=true)\n\n#### More examples are in  the ExImages folder\n\n[ExImages](./ExImages)\n\n### Background\n\nI made this program so I could track Elon Musk's Jet and share his whereabouts with others orginally on Twitter (but now suspended, but now also on other platforms). I have now expanded and run multiple accounts for multiple planes, a list of the accounts can be found here \u003chttps://grndcntrl.net/links\u003e\n\n### Contributing\n\nI'm open to any help or suggestions, I realize there are many better ways to improve this program and better ways to get this program to work properly, I'm only a noob. I'll accept pull requests. If you'd like to discuss join \u003chttps://discord.gg/groundcontrol\u003e\n\n### [Algorithm](PseudoCode.md)\n\n## Setup / Install\n- Install using the following steps or use Docker, scroll down to the Docker section.\n\n### Make sure Python/PIP is installed\n\n```bash\napt update\napt install python3\napt install python3-pip\n```\n\n### Install Pipenv and Dependencies\n\n```bash\npip install pipenv\npipenv install\n```\n\n### Install Selenium / ChromeDriver or setup Google Static Maps\n\nSelenium/ChromeDriver is used to take a screenshot of the plane on globe.theairtraffic.com. Or use Google Static Maps, which can cost money if overused(No tutorial use \u003chttps://developers.google.com/maps/documentation/maps-static/get-api-key\u003e to get to a key).\n\n#### Chrome \n- This is assuming linux/debian\n```bash\ncurl -sSL https://dl-ssl.google.com/linux/linux_signing_key.pub  | apt-key add \necho \"deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main\" \u003e /etc/apt/sources.list.d/google.list\napt update\napt install google-chrome-stable\n```\nThese output methods once installed can be configured in the planes config you create, using the example plane1.ini\n\n### Install Screen to run in the background\n\n```bash\napt install screen\n```\n\n### Download / Clone\n\n```bash\napt install git\ngit clone -b multi --single-branch https://github.com/Jxck-S/plane-notify.git\ncd plane-notify\n```\n\n### Configure main config file with keys and URLs (mainconf.ini) in the configs directory\n\n-   Copy `mainconf.ini.example` to `mainconf.ini` andCopy `plane1.ini.example` to `plane1.ini`. `plane1.ini` can change names as long as it ends with the ini extension\n-   Edit them with nano or vi on the running machine or on your pc and transfer the config to where you will be running the bot\n-   Pick between OpenSky and ADS-B Exchange\n-   The OpenSky API is free for everyone but the data is not as good as ADS-B Exchange. The ADS-B Exchange API is not free and this program will not work for the Rapid API from ADS-B Exchange. It only works with the API that they give when you have a partnership with ADS-B Exchange. It is not cheap to get the ADS-B Exchange full API, Don't contact them unless you are ready to pay. \n-   If you'd like to add support for ADS-B Exchanges RapidAPI feel free to work on it and submit a merge request. \n-   If you've set up multiple planes and want to use ADSB Exchange as your source you must have /all endpoint access to their API or it won't work.\n-   Pick the correct API version for ADS-B Exchange.\n-   Proxy is if your running multiple programs that use the ADSB Exchange, setup the proxy from lemonodor so you don't abuse the ADSB Exchange API, otherwise leave enable false.\n-   When using OpenSky there are more bugs because I mainly use ADS-B Exchange and work less on the OpenSky Implementation. \n\n\n### Configure individual planes\n\n-   An example file is given (plane1.ini) plane config files should be in the configs directory, the program looks for any file in that folder with a .ini extension.\n-   Each plane should have its own config\n\n### Enter and create a new Screen Session\n\n```bash\nscreen -R \u003cname screen whatever you want\u003e\n```\n\n### Start Program\n\n```bash\npipenv run python __main__.py\n```\n\n## Using with Docker\n\nInstall [docker from their website](https://docs.docker.com/get-docker/). Run the following command from the root of the project.\n\n```bash\ndocker-compose up -d\n```\n\nAfter running this command, due to the `-d` flag the container will be running in the background. To see the logs of the docker container use `docker logs CONTAINER` (add `-f` to continue streaming the containers output)\n\n### Telegram message feature - march/2022\n\nData obtained can be sent through Telegram to a chat (contact), channel or groups.\n\nCreating a Telegram Bot\n-   Start a conversation with [BotFather](https://t.me/BotFather);\n-   Send it to the BotFather: /newbot\n-   Choose a name for your bot;\n-   Choose a username for your bot;\n-   Done! You'll get a token to access the HTTP API.\n\nGetting channel or chat (contact) ID\n-   Start a conversation with [JsonDumpBot](https://t.me/JsonDumpBot);\n-   It will reply with a json with information from the message;\n-   Go to the channel or chat you want the id and forward a message from there to JsonDumpBot;\n-   Find the id in the reply. It'll look something like this:\n```bash\n   {...\n    \"forward_from_chat\": {\n          \"id\": xxxxxxxxx,\n   ...}\n```\n-   Don't forget to add the bot as admin in channel so messages can be sent.\n\nGetting a group ID\n-   Open [Telegram web](https://web.telegram.org);\n-   Go to group and check the url on address bar of browser;\n-   That's the group ID (-xxxxxxxxx), it'll look something like this:\n```bash\n  https://web.telegram.org/z/#-xxxxxxxxx\n```\n\n### TODO\n\n-   General Cleanup\n-   Restructure project to make it proper currently random files because I didn't know how to properly structure a project before. (in progress)\n-   Add proper logging and service to run the program and remove excessive printing.\n-   Better single config YAML, or DB maybe\n\n### [More References/Documentation](References.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJxck-S%2Fplane-notify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FJxck-S%2Fplane-notify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJxck-S%2Fplane-notify/lists"}