use std::path::Path;
use crate::error::UnbundleError;
use crate::metadata::MediaMetadata;
use crate::unbundle::MediaFile;
#[cfg(feature = "async")]
use crate::stream::MetadataFuture;
pub struct MediaProbe;
impl MediaProbe {
pub fn probe<P: AsRef<Path>>(path: P) -> Result<MediaMetadata, UnbundleError> {
log::debug!("Probing media file: {}", path.as_ref().display());
let unbundler = MediaFile::open(path)?;
Ok(unbundler.metadata.clone())
}
pub fn probe_many<P: AsRef<Path>>(paths: &[P]) -> Vec<Result<MediaMetadata, UnbundleError>> {
paths.iter().map(|path| Self::probe(path)).collect()
}
#[cfg(feature = "async")]
pub fn probe_async<P: AsRef<Path>>(path: P) -> MetadataFuture {
let source = path.as_ref().to_string_lossy().to_string();
log::debug!("Async probing media file: {}", path.as_ref().display());
crate::stream::create_metadata_future(source)
}
}