ytitler 0.0.4

Fetch YouTube videos info and save the result to playlist(s) (m3u files).
// External.
#[macro_use]
extern crate log;

// Internal.
mod cli;
mod scrapper;
mod playlist;

use crate::cli::args;
use crate::cli::logger;
use crate::playlist::Playlist;


fn main() {

    // Parse CLI arguments.
    let app_options = args::get_options();

    // Set up logging.
    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.")
    }
}