caesura 0.26.0

An all-in-one command line tool to **transcode FLAC** audio files and **upload to gazelle** based indexers/trackers.
Documentation
use crate::commands::*;
use crate::utils::SourceIssue::*;
use crate::utils::*;

pub(crate) struct StreamVerifier;

impl StreamVerifier {
    pub(crate) fn execute(flac: &FlacFile) -> Vec<SourceIssue> {
        let mut errors = Vec::new();
        let info = match flac.get_stream_info() {
            Ok(info) => info,
            Err(claxon_error) => {
                errors.push(FlacError {
                    path: flac.path.clone(),
                    error: format!("{claxon_error}"),
                });
                return errors;
            }
        };
        if get_resample_rate(&info).is_err() {
            errors.push(SampleRate {
                path: flac.path.clone(),
                rate: info.sample_rate,
            });
        }
        if let Some(rate) = get_average_bit_rate(&info)
            && rate < MIN_BIT_RATE_KBPS * 1000
        {
            errors.push(BitRate {
                path: flac.path.clone(),
                rate,
            });
        }
        if let Some(seconds) = get_duration(&info)
            && seconds > MAX_DURATION
        {
            errors.push(Duration {
                path: flac.path.clone(),
                seconds,
            });
        }
        if info.channels > 2 {
            errors.push(Channels {
                path: flac.path.clone(),
                count: info.channels,
            });
        }
        errors
    }
}