Created
January 24, 2024 23:03
-
-
Save tintinweb/3ab44256d147700b1850dcebdc0e81ae to your computer and use it in GitHub Desktop.
BenkoJet - a hacky adsbexchange jet tracker (+ future BenkoJet tweeter?) π¦
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*** | |
BenkoJet auto-tweet'er | |
todo: | |
- grab a user token from adsbexchange | |
- implement twitter api | |
- only tweet if last flight changed | |
super cheap. salut π«‘ | |
{ | |
registration: 'OE-IRB', | |
icao: '440cbc', | |
ac_type: 'GLEX', | |
year: null, | |
manufacturer: null, | |
model: 'Bombardier BD700-Global 6000/6500', | |
ownop: null, | |
short_type: 'L2J', | |
faafieldlength: 3667, | |
aclength: 99.4, | |
acheight: 25.5, | |
wingspan: 94, | |
range: 6226, | |
burnrate: 513 | |
} | |
-------------------------------------------------------------------------------------------------------------------- | |
π¨ββοΈ BenkoJet Bombardier BD700-Global 6000/6500 (OE-IRB) ist vor kurzem in 'Innsbruck Airport' gelandet π₯³! | |
6:55:29 PM 7:36:32 PM | |
[Vienna International Airport] π« βοΈβοΈβοΈβοΈβοΈ 0:41 βοΈβοΈβοΈβοΈβοΈ π¬ [Innsbruck Airport] | |
βοΈ 401.884 km | |
-------------------------------------------------------------------------------------------------------------------- | |
*/ | |
class BenkoJet { | |
constructor(icaoId) { | |
this.icaoId = icaoId; | |
} | |
async icao() { | |
const payload = { | |
"user_token": "<auth-jwt>", | |
"payload": { | |
"icao": this.icaoId, | |
"full_details": true | |
} | |
} | |
const ret = await fetch("https://adsbexchange.com/api/aircraft/v2/operations/icao", { | |
"headers": { // make this look like a browser request | |
"accept": "application/json, text/javascript, */*; q=0.01", | |
"accept-language": "en-GB,en-US;q=0.9,en;q=0.8", | |
"content-type": "application/json", | |
"sec-ch-ua": "\"Google Chrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"", | |
"sec-ch-ua-mobile": "?0", | |
"sec-ch-ua-platform": "\"macOS\"", | |
"sec-fetch-dest": "empty", | |
"sec-fetch-mode": "cors", | |
"sec-fetch-site": "same-site", | |
"Referer": "https://globe.adsbexchange.com/", | |
"Referrer-Policy": "strict-origin-when-cross-origin" | |
}, | |
"body": JSON.stringify(payload), | |
"method": "POST" | |
}); | |
return await ret.json(); | |
} | |
} | |
async function main() { | |
const benko = new BenkoJet("440cbc") | |
// run the script 2 times a day | |
const icao = await benko.icao(); | |
console.log(icao.aircraft_details) | |
// store this as "latest.json" | |
const latest = icao.items[0] | |
// todo: check current icao.items against latest.json. | |
// todo: if has changed, tweet about it π | |
const message = `π¨ββοΈ BenkoJet ${icao.aircraft_details.model} (${icao.aircraft_details.registration}) ist vor kurzem in '${latest.landing_name}' gelandet π₯³! | |
${new Date(latest.takeoff_time_epoch).toLocaleTimeString()} ${new Date(latest.landing_time_epoch).toLocaleTimeString()} | |
[${latest.takeoff_name}] π« βοΈβοΈβοΈβοΈβοΈ ${latest.duration} βοΈβοΈβοΈβοΈβοΈ π¬ [${latest.landing_name}] | |
βοΈ ${latest.distance * 1.85200} km | |
`; | |
// todo: tweet | |
console.log(message) | |
return; | |
} | |
main(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment