clanko_zbierac/
lib.rs

1pub use anyhow::Result;
2
3pub mod medium;
4
5pub mod aktuality;
6pub mod dennikn;
7pub mod idnes;
8pub mod sme;
9pub mod trend;
10
11#[derive(serde::Deserialize, Clone)]
12pub struct MediaConfig {
13    pub trend: Option<trend::Trend>,
14    pub sme: Option<sme::Sme>,
15    pub dennikn: Option<dennikn::DennikN>,
16    pub aktuality: Option<aktuality::Aktuality>,
17    pub idnes: Option<idnes::Idnes>,
18}
19impl Default for MediaConfig {
20    fn default() -> Self {
21        Self {
22            trend: None,
23            sme: None,
24            dennikn: None,
25            aktuality: None,
26            idnes: None,
27        }
28    }
29}
30
31pub fn config_from_file() -> Result<MediaConfig> {
32    let config = std::fs::read_to_string("config.toml").unwrap_or_default();
33    let config: MediaConfig = toml::from_str(&config).unwrap_or_else(|_| MediaConfig {
34        trend: None,
35        sme: None,
36        dennikn: None,
37        aktuality: None,
38        idnes: None,
39    });
40    Ok(config)
41}
42
43pub fn markdown_to_pdf(content: &str, name: &str) -> Result<()> {
44    let md = format!("{name}.md").to_string();
45    let pdf = format!("{name}.pdf");
46    std::fs::write(&md, &content)?;
47    let mut pandoc = pandoc::new();
48    pandoc.add_input(&md);
49    pandoc.set_output(pandoc::OutputKind::File(pdf.into()));
50    pandoc.execute()?;
51    std::fs::remove_file(md)?;
52    Ok(())
53}