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}