2023-07-25 10:36:08 +01:00
|
|
|
mod errors;
|
2023-07-25 10:46:47 +01:00
|
|
|
mod feed;
|
2023-07-25 10:58:56 +01:00
|
|
|
mod fetch;
|
2023-07-25 10:53:26 +01:00
|
|
|
mod history;
|
2023-07-25 10:46:47 +01:00
|
|
|
pub mod prelude;
|
2023-07-25 10:57:19 +01:00
|
|
|
mod subscriptions;
|
2023-07-25 10:33:41 +01:00
|
|
|
|
2023-07-25 10:46:47 +01:00
|
|
|
use prelude::*;
|
2023-07-25 10:33:41 +01:00
|
|
|
|
|
|
|
pub fn run(subscriptions: &str, history: &str, site: &str) -> Result<()> {
|
2023-07-25 10:57:19 +01:00
|
|
|
for channel_name in subscriptions::lines_from(subscriptions)? {
|
2023-07-25 10:33:41 +01:00
|
|
|
let channel_name = channel_name?;
|
|
|
|
println!("Channel: {}", channel_name);
|
2023-07-25 10:46:47 +01:00
|
|
|
let feed_url = feed::get_feed_url(site, &channel_name)?;
|
2023-07-25 10:50:00 +01:00
|
|
|
for entry in feed::get_feed(feed_url)?.entries() {
|
2023-07-25 10:50:31 +01:00
|
|
|
if let Some(link) = entry.links().get(0).cloned() {
|
2023-07-25 10:53:26 +01:00
|
|
|
if !history::is_already_downloaded(&link, history)? {
|
2023-07-25 10:33:41 +01:00
|
|
|
println!("Downloading {}: {}", &channel_name, entry.title().as_str());
|
2023-07-25 10:58:56 +01:00
|
|
|
fetch::download_audio(&link)?;
|
2023-07-25 10:55:02 +01:00
|
|
|
history::mark_as_downloaded(&link, history)?;
|
2023-07-25 10:33:41 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Ok(())
|
|
|
|
}
|