crieur/examples/cli_downloader.rs
koalp c4ab210c4d
feat: add retrieval application and one newspaper
A first example as well as some documentation have been added

The first example builds an article location and download the article as
an html String.

The documentation explains how it has been designed and what is the goal
of the application as well as it's intended architecture
2021-04-23 22:12:02 +02:00

37 lines
1.1 KiB
Rust

use std::convert::TryInto;
use std::env;
use anyhow::Result;
use crieur_retrieve::{ArticleLocation, Mediapart, newspaper::Newspaper, Url};
use dotenv::dotenv;
use log::info;
#[tokio::main]
async fn main() -> Result<()> {
dotenv().ok();
env_logger::init();
let url = match env::args().nth(1) {
Some(url) => Url::parse(&url)?,
None => "https://www.mediapart.fr/journal/france/030421/l-hotel-dieu-patients-et-medecins-tentent-de-percer-les-mysteres-du-covid-long".try_into()?,
};
// TODO: remove this in favor of default newspapers
let mut mediapart = Mediapart::new().await
//.login(USERNAME, PASSWORD)
//
;
mediapart.login_cookie = Some(("MPRUUID".into(), env::var("MEDIAPART_COOKIE")?.into()));
info!("Trying to download article from {}", url);
// TODO: shorten this, maybe an helper function ?
let article_location = ArticleLocation::builder().url(url)?.newspaper(&mediapart).build()?;
let article_str = article_location.retrieve_html().await?;
println!("{}", article_str);
Ok(())
}