#[macro_use]
extern crate log;
mod cli;
mod scrapper;
mod playlist;
use crate::cli::args;
use crate::cli::logger;
use crate::playlist::Playlist;
fn main() {
let app_options = args::get_options();
logger::set_up(app_options.debug).expect("Cannot set up logging");
let mut playlist = match Playlist::try_from(&app_options.file) {
Ok(p) => p,
Err(_e) => {
error!("Couldn't load playlist from the given path.");
return
}
};
playlist.remove_duplicities();
info!("Parsed {} URL(s)", playlist.urls.len());
let chunks = playlist.to_chunks();
info!("Chunks: {}", chunks.len());
let videos = scrapper::fetch(chunks, Some(app_options.progress_bar));
info!("{}", videos.len());
let output_file = if app_options.output.is_some() {
app_options.output.unwrap()
} else {
app_options.file
};
match playlist.save(output_file, &videos) {
Ok(_) => info!("Playlist has been saved."),
Err(_) => error!("Couldn't save playlist.")
}
}