use anyhow::{Result, bail};
use audio_batch_speedup::AudioFormat;
use clap::Parser;
use log::{LevelFilter, info};
use std::path::PathBuf;
#[derive(Parser)]
#[command(author, version, about = "Batch speed up audio files")]
struct Cli {
input: PathBuf,
#[arg(short, long)]
speed: f32,
#[arg(short, long, value_delimiter = ',', default_value = "all")]
formats: Vec<AudioFormat>,
}
fn main() -> Result<()> {
_ = pretty_env_logger::formatted_builder()
.filter_level(LevelFilter::Info)
.format_timestamp_secs()
.parse_default_env()
.try_init();
let args = Cli::parse();
if !args.input.exists() {
bail!("The specified folder does not exist.");
}
if !args.input.is_dir() {
bail!("Please specify a folder path.");
}
let selected_formats = args
.formats
.iter()
.fold(AudioFormat::empty(), |acc, f| acc | *f);
info!("Starting processing for folder: {}", args.input.display());
audio_batch_speedup::process_audio_files(&args.input, args.speed, selected_formats)?;
info!("Processing complete.");
Ok(())
}