Skip to content

Commit dc48e07

Browse files
committed
change orbit update script to only use a single TLE query per hour
1 parent 039a575 commit dc48e07

File tree

1 file changed

+24
-26
lines changed

1 file changed

+24
-26
lines changed

scripts/orbits.js

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,6 @@
88
const MongoClient = require('mongodb');
99
const request = require('request-promise-native').defaults({ jar: true });
1010

11-
const sleep = ms => {
12-
return new Promise(resolve => setTimeout(resolve, ms));
13-
};
14-
1511
// Using an async foreach so we can use request promises in each payload
1612
async function asyncForEach(array, callback) {
1713
for (let index = 0; index < array.length; index += 1) {
@@ -52,31 +48,34 @@ async function asyncForEach(array, callback) {
5248
});
5349

5450
const start = async () => {
51+
try {
52+
orbitData = await request('https://www.space-track.org/basicspacedata/query/class/tle_latest/ORDINAL/1/orderby/NORAD_CAT_ID/epoch/>now-30/format/json');
53+
} catch (e) {
54+
console.log('Login Broken');
55+
process.exit(1);
56+
}
57+
const orbit = JSON.parse(orbitData);
58+
5559
await asyncForEach(id, async num => {
56-
await sleep(7000);
57-
try {
58-
orbitData = await request(`https://www.space-track.org/basicspacedata/query/class/tle/NORAD_CAT_ID/${num}/limit/1`);
59-
} catch (e) {
60-
console.log('Login Broken');
61-
process.exit(1);
62-
}
63-
const orbit = JSON.parse(orbitData);
60+
const specific_orbit = orbit.filter(satellite => {
61+
return parseInt(satellite.NORAD_CAT_ID, 10) === num;
62+
});
6463

65-
if (orbit[0] !== undefined && orbit.length !== 0) {
64+
if (specific_orbit[0] !== undefined && specific_orbit.length !== 0) {
6665
const update = {
67-
epoch: new Date(orbit[0].EPOCH).toISOString(),
68-
mean_motion: parseFloat(orbit[0].MEAN_MOTION),
69-
raan: parseFloat(orbit[0].RA_OF_ASC_NODE),
70-
arg_of_pericenter: parseFloat(orbit[0].ARG_OF_PERICENTER),
71-
mean_anomaly: parseFloat(orbit[0].MEAN_ANOMALY),
72-
semi_major_axis_km: parseFloat(orbit[0].SEMIMAJOR_AXIS),
73-
eccentricity: parseFloat(orbit[0].ECCENTRICITY),
74-
periapsis_km: parseFloat(orbit[0].PERIGEE),
75-
apoapsis_km: parseFloat(orbit[0].APOGEE),
76-
inclination_deg: parseFloat(orbit[0].INCLINATION),
77-
period_min: parseFloat(orbit[0].PERIOD),
66+
epoch: new Date(specific_orbit[0].EPOCH).toISOString(),
67+
mean_motion: parseFloat(specific_orbit[0].MEAN_MOTION),
68+
raan: parseFloat(specific_orbit[0].RA_OF_ASC_NODE),
69+
arg_of_pericenter: parseFloat(specific_orbit[0].ARG_OF_PERICENTER),
70+
mean_anomaly: parseFloat(specific_orbit[0].MEAN_ANOMALY),
71+
semi_major_axis_km: parseFloat(specific_orbit[0].SEMIMAJOR_AXIS),
72+
eccentricity: parseFloat(specific_orbit[0].ECCENTRICITY),
73+
periapsis_km: parseFloat(specific_orbit[0].PERIGEE),
74+
apoapsis_km: parseFloat(specific_orbit[0].APOGEE),
75+
inclination_deg: parseFloat(specific_orbit[0].INCLINATION),
76+
period_min: parseFloat(specific_orbit[0].PERIOD),
7877
};
79-
console.log(`Updating...${orbit[0].OBJECT_NAME}`);
78+
console.log(`Updating...${specific_orbit[0].OBJECT_NAME}`);
8079
console.log(update);
8180
await col.updateOne({ 'rocket.second_stage.payloads.norad_id': num }, {
8281
$set: {
@@ -93,7 +92,6 @@ async function asyncForEach(array, callback) {
9392
'rocket.second_stage.payloads.$.orbit_params.period_min': update.period_min,
9493
},
9594
});
96-
console.log('Updated...');
9795
}
9896
});
9997
};

0 commit comments

Comments
 (0)