Use cached weather data

- Read `weatherd` cache instead of fetching from API
This commit is contained in:
Candifloss 2025-10-11 15:33:11 +05:30
parent a5a7e6a5db
commit ebbbf7533f
2 changed files with 31 additions and 12 deletions

View File

@ -9,4 +9,4 @@ owm_widg_config = { path = "../owm_widg_config" }
reqwest = {version = "0.12.23", features = ["blocking", "json"] } reqwest = {version = "0.12.23", features = ["blocking", "json"] }
toml = "0.9.7" toml = "0.9.7"
dirs = "6.0.0" dirs = "6.0.0"
serde_json = "1.0.145"

View File

@ -1,4 +1,4 @@
//use owm_api25::current::WeatherResponse; use owm_rs::free_api_v25::current::WeatherResponse;
use owm_widg_config::config::Config; use owm_widg_config::config::Config;
use std::fs; use std::fs;
@ -15,19 +15,38 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
match cfg.general.api_version.as_str() { match cfg.general.api_version.as_str() {
"free_2.5" => { "free_2.5" => {
/* // Read json data from cache file
let query = owm_api25::query::QueryParams::from(cfg.query_params); let cache_path = dirs::cache_dir()
.ok_or("No cache dir found")?
.join("candydesktop/owm_widget.json");
let url = query.weather_url()?; let json_data = fs::read_to_string(&cache_path)?;
let resp = blocking::get(&url)?.json::<WeatherResponse>()?; let resp: WeatherResponse = serde_json::from_str(&json_data)?;
println!("City: {}, {}", resp.name, resp.sys.country); // Print city and country
if let Some(w) = resp.weather.first() { if let Some(city) = &resp.name {
println!("Weather: {}", w.main); print!("City: {city}");
println!("Icon: {}", w.icon); if let Some(sys) = &resp.sys
&& let Some(country) = &sys.country
{
print!(", {country}");
}
println!();
}
// Print weather description
if let Some(weather) = resp.weather.first() {
println!("Weather: {}", weather.main);
println!("Icon: {}", weather.icon);
}
// Print temperature
if let Some(main_data) = &resp.main
&& let Some(temp) = main_data.temp
{
println!("Temperature: {temp:.1}°C");
} }
println!("Temperature: {}°C", resp.main.temp);
*/
} }
other => { other => {
return Err(format!("Unsupported api_version: {other}").into()); return Err(format!("Unsupported api_version: {other}").into());