···66[dependencies]
77chrono = "0.4.40"
88ratatui = "0.29.0"
99-reqwest = { version = "0.12.15", features = ["json"] }
109serde = { version = "1.0.219", features = ["derive"] }
1110sgp4 = "2.2.0"
1211tokio = { version = "1.44.2", features = ["full"] }
1212+ureq = { version = "3.0.11", features = ["json"] }
13131414tracing = {version = "0.1.41", optional = true}
1515tracing-error = {version="0.2.1",optional = true}
+3-2
src/location.rs
···12121313//to be deleted dont think i need it much longer?
1414pub async fn get_celerak_data() -> (Option<sgp4::Constants>,Option<DateTime<Utc>>) {
1515- let resp = reqwest::get("https://celestrak.org/NORAD/elements/gp.php?GROUP=stations&FORMAT=json").await.unwrap();
1515+ let mut resp = ureq::get("https://celestrak.org/NORAD/elements/gp.php?GROUP=stations&FORMAT=json").call().unwrap();
1616+ //blocking, and thats okey.
16171717- let element_vec:Vec<sgp4::Elements> = resp.json().await.unwrap();
1818+ let element_vec:Vec<sgp4::Elements> = resp.body_mut().read_json().unwrap();
181919202021 let epoch = &element_vec[0].datetime.and_utc();
+15-11
src/main.rs
···2424#[tokio::main]
2525async fn main() -> Result<()> {
2626 #[cfg(feature = "logging")]
2727- let _ = logging::initialize_logging();
2727+ let _ = { logging::initialize_logging() };
2828 enable_raw_mode()?;
2929 let mut stderr = io::stderr(); // This is a special case. Normally using stdout is fine
3030 execute!(stderr, EnterAlternateScreen, EnableMouseCapture)?;
···3434 // create app and run it
35353636 let app = Arc::new(Mutex::new(App::new()));
3737- let location_shared_app = Arc::clone(&app);
3838- let location_shared_app2 = Arc::clone(&app);
3737+ let constant_obtain_shared_app = Arc::clone(&app);
3838+ let location_update_shared_app = Arc::clone(&app);
3939 let mut runtime_shared_app = Arc::clone(&app);
404041414242 let get_constant = tokio::task::spawn(async move {
4343- location_shared_app.lock().unwrap().getting_location = true;
4343+ constant_obtain_shared_app.lock().unwrap().getting_location = true;
4444 let constant = location::get_celerak_data().await;
4545 if let (Some(cons),Some(epoch)) = constant {
4646- location_shared_app.lock().unwrap().iss_constant = Some(cons);
4747- location_shared_app.lock().unwrap().iss_constant_epoch = Some(epoch);
4646+ constant_obtain_shared_app.lock().unwrap().iss_constant = Some(cons);
4747+ constant_obtain_shared_app.lock().unwrap().iss_constant_epoch = Some(epoch);
4848 }
4949- location_shared_app.lock().unwrap().getting_location = false;
4949+ constant_obtain_shared_app.lock().unwrap().getting_location = false;
5050 });
51515252 let _ = get_constant;
5353545455555656+5757+5858+5959+5660 let forever = tokio::task::spawn(async move {
5761 let mut interval = tokio::time::interval(Duration::from_secs(2));
58625963 loop {
6064 interval.tick().await;
6161- if location_shared_app2.lock().unwrap().iss_constant.is_some() {
6565+ if location_update_shared_app.lock().unwrap().iss_constant.is_some() {
6266 let now = Utc::now();
6367 let d_since_j2000 = julian_years_since_j2000(&now.naive_utc()) * 365.25;
6468 let rad_diff_earth_rotation = location::earth_rotation_angle(d_since_j2000);
6565- let time_diff = now - location_shared_app2.lock().unwrap().iss_constant_epoch.unwrap();
6666- let prediction = location_shared_app2.lock().unwrap().iss_constant.as_ref().unwrap()
6969+ let time_diff = now - location_update_shared_app.lock().unwrap().iss_constant_epoch.unwrap();
7070+ let prediction = location_update_shared_app.lock().unwrap().iss_constant.as_ref().unwrap()
6771 .propagate(MinutesSinceEpoch(time_diff.num_seconds() as f64 / 60.0)).unwrap();
68726973 let pred_spherical = location::polar_loc_transformer(prediction.position);
···7478 } else {
7579 pred_spherical[0]-(rad_diff_earth_rotation as f32)*180.0/PI
7680 };
7777- location_shared_app2.lock().unwrap().iss_location = Some(location::FLocation {
8181+ location_update_shared_app.lock().unwrap().iss_location = Some(location::FLocation {
78827983 latitude: pred_spherical[1],
8084 longitude: long_value