{"id":13832784,"url":"https://github.com/gourcetools/NostrAirTracker","last_synced_at":"2025-07-09T19:31:21.700Z","repository":{"id":165728563,"uuid":"614924150","full_name":"gourcetools/NostrAirTracker","owner":"gourcetools","description":"Aka elonjet | The application allows users to monitor the position, speed, and altitude of  specified aircraft, then determine his status and publish accordingly to the Nostr Network.","archived":false,"fork":false,"pushed_at":"2023-05-19T16:26:23.000Z","size":2970,"stargazers_count":16,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-18T12:24:12.717Z","etag":null,"topics":["ads-b","adsb","adsbexchange","adsbexchange-stats","aircraft","airport","elonjet","icao","land","nostr","plane","takeoff"],"latest_commit_sha":null,"homepage":"https://nostr.band/npub1qqqqpza762tx3vjrxt7f94eyxej6z4h5yx4hlvy0mnq7r085hsfqtfyr5n","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gourcetools.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":"2023-03-16T15:35:20.000Z","updated_at":"2024-03-30T19:11:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"f0e4340f-de7c-47ff-a315-3c336fc3a4fa","html_url":"https://github.com/gourcetools/NostrAirTracker","commit_stats":{"total_commits":43,"total_committers":1,"mean_commits":43.0,"dds":0.0,"last_synced_commit":"ee2374fb2538536c19e33af898bfad982aa619a9"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gourcetools%2FNostrAirTracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gourcetools%2FNostrAirTracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gourcetools%2FNostrAirTracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gourcetools%2FNostrAirTracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gourcetools","download_url":"https://codeload.github.com/gourcetools/NostrAirTracker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225581837,"owners_count":17491794,"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":["ads-b","adsb","adsbexchange","adsbexchange-stats","aircraft","airport","elonjet","icao","land","nostr","plane","takeoff"],"created_at":"2024-08-04T11:00:30.646Z","updated_at":"2024-11-20T15:31:06.092Z","avatar_url":"https://github.com/gourcetools.png","language":"JavaScript","funding_links":[],"categories":["Tools"],"sub_categories":["Client reviews and/or comparisons"],"readme":"# NostrAirTracker\n\u003cimg src=\"https://img.shields.io/badge/Tested%20under-Ubuntu%2022.04.1%20LTS-orange\"\u003e \u003cimg src=\"https://img.shields.io/badge/License-MIT-orange.svg\"\u003e\u003cbr\u003e\n\nThe application allows users to monitor a specified aircraft. \u003cbr\u003e\nDetermine his status \u0026 publish accordingly to Nostr.\u003cbr\u003e\nNo API keys needed. Simple setup.\u003cbr\u003e\n\n\n# \u003cb\u003e✔️ How to use NostrAirTracker?\u003c/b\u003e\u003cbr\u003e\n```\n git clone https://github.com/gourcetools/NostrAirTracker\n cd ./NostrAirTracker\n ./INSTALL.sh\n ./SETUP.sh\n ./START-CRAWLER.sh\n```\nAnd if you want to publish stuff to nostr, run \n```\n ./START-PUBLISHER.sh\n```\n\n\n![image](https://user-images.githubusercontent.com/120996278/225669565-7d060b15-9440-42d8-ae37-b0ae8dc6e179.png)\n\n\nNostrAirTracker \u003cbr\u003e\n├── config \u003cbr\u003e\n│   ├── ICAO-ID.txt ``ICAO id that we will track`` \u003cbr\u003e\n│   ├── NOSTR-HEX-PRIVKEY.txt ``nostr key that we will use to publish`` \u003cbr\u003e\n│   └── PUP-BROWSER-LOCATION.txt ``path to the browser Puppeteer will use to crawl`` \u003cbr\u003e\n├── data \u003cbr\u003e\n│   └── airports.dat ``airports locations used to determine where the plane is`` \u003cbr\u003e\n├── INSTALL.sh ``script to install node and python stuff`` \u003cbr\u003e\n├── SETUP.sh  ``script to setup ICAO-ID, PRIVKEY and BROSWER LOCATION`` \u003cbr\u003e\n├── src \u003cbr\u003e\n│   ├── combine.py ``script to combine screenshots`` \u003cbr\u003e\n│   ├── crawled-position-to-airport.py ``script to convert position to airport name`` \u003cbr\u003e\n│   ├── crawl-position.js ``script to crawl position`` \u003cbr\u003e\n│   ├── crawl-speed-altitude-loop.js ``MAIN SCRIPT to to crawl data and determine plane status`` \u003cbr\u003e\n│   ├── nostr-publish-loop.sh  ``PUBLISHING SCRIPT that publish when status change`` \u003cbr\u003e\n│   └── screenshot.js ``script to take 2 screenshoots: one far away, one zoomed in`` \u003cbr\u003e\n├── START-CRAWLER.sh ``script to start the main crawler loop quickly.`` \u003cbr\u003e\n└── START-PUBLISHER.sh ``script to start the main publisher loop quickly.`` \u003cbr\u003e\n\n\n# Done:\n- [x] 📡 Crawl:\n          - Speed\n          - Altitude\n          - LastSeen\n          - LAT \u0026 LONG (Position)         \n- [x] 🧠 Determine: \n          - Plane status based on last data and freshly crawled data.\n          - Airport name based on ``LAT`` \u0026 ``LONG``\n- [x] 📢 Send status update to nostr network. | `KIND: 1\n- [x] 📷 Take screenshoots.\n- [x] Post screenshoots with status update.\n\n\n# Todo:\n\n- [ ] Simple shell Menu.\n- [ ] Use tor for crawling to avoid being blocked in the future.\n- [ ] Remove completely nostr-publisher.sh and put it inside the main loop with settings in the main menu for publishing.\n- [ ] Shell menu.\n- [ ] Support for more relays, import relays list from a file in config folder instead of hardcoded variables.\n\n\n# Problems:\n- Written by me.\n\n\n# \u003cb\u003e⚙️ Requirements:\u003c/b\u003e\u003cbr\u003e\n\n- `node`\n- `npm` \n- `python` \n- `pip` \n\n- `nostril` : https://github.com/jb55/nostril\n\n\n\n\u003cbr\u003e\n\n\n\n# 🙋‍♂️ Need help? \u003cbr\u003e \n### \u003cb\u003eTelegram:\u003c/b\u003e https://t.me/bitpaint \u003cbr\u003e\n### \u003cb\u003eTwitter:\u003c/b\u003e https://twitter.com/bitpaintclub \u003cbr\u003e\n### \u003cb\u003eNostr:\u003c/b\u003e \u003cbr\u003e\n#### hex: \n``` \n0000005cc4586681ad8e7f4b75436fb7904b0e34ff072bb3406ddb90226d7eab \n``` \n#### npub: \n``` \nnpub1qqqqqhxytpngrtvw0a9h2sm0k7gykr35lurjhv6qdhdeqgnd064swghgx4 \n``` \n#### nip05: \n``` \ngourcetools@gourcetools.github.io \n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgourcetools%2FNostrAirTracker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgourcetools%2FNostrAirTracker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgourcetools%2FNostrAirTracker/lists"}