mi/backend/src/bin/weatherscrape.rs

39 lines
1000 B
Rust

#![allow(unreachable_code)]
#[macro_use]
extern crate tracing;
use color_eyre::eyre::Result;
use encoding_rs::WINDOWS_1252;
use encoding_rs_io::DecodeReaderBytesBuilder;
use serde_xml_rs::from_reader;
use mi::*;
pub const WEATHER_URL: &'static str =
"https://dd.weather.gc.ca/citypage_weather/xml/QC/s0000635_e.xml";
fn main() -> Result<()> {
color_eyre::install()?;
tracing_subscriber::fmt::init();
info!("{} weather importer starting up", mi::APPLICATION_NAME);
let resp = ureq::get(WEATHER_URL)
.set("User-Agent", WEATHER_URL)
.call()
.map_err(|why| {
panic!("{}", why.to_string());
why
})?;
let fin = DecodeReaderBytesBuilder::new()
.encoding(Some(WINDOWS_1252))
.build(resp.into_reader());
let data: web::canada_weather::types::SiteData = from_reader(fin)?;
let data: web::canada_weather::Report = data.into();
println!("{}", serde_json::to_string_pretty(&data)?);
Ok(())
}