stem-splitter-core 1.2.0

Core library for AI-powered audio stem separation
Documentation
use crate::error::{Result, StemError};
use directories::ProjectDirs;
use std::path::PathBuf;

pub fn models_cache_dir() -> Result<PathBuf> {
    let proj = ProjectDirs::from("dev", "StemSplitter", "stem-splitter-core")
        .ok_or(StemError::CacheDirUnavailable)?;
    let mut p = PathBuf::from(proj.cache_dir());
    p.push("models");
    Ok(p)
}

pub fn ep_cache_file() -> Result<PathBuf> {
    let proj = ProjectDirs::from("dev", "StemSplitter", "stem-splitter-core")
        .ok_or(StemError::CacheDirUnavailable)?;
    let mut p = PathBuf::from(proj.cache_dir());
    p.push("ep_health_v1.json");
    Ok(p)
}

pub fn ep_probe_cache_file() -> Result<PathBuf> {
    let proj = ProjectDirs::from("dev", "StemSplitter", "stem-splitter-core")
        .ok_or(StemError::CacheDirUnavailable)?;
    let mut p = PathBuf::from(proj.cache_dir());
    p.push("ep_probe_success_v1.json");
    Ok(p)
}

pub fn coreml_cache_dir() -> Result<PathBuf> {
    let proj = ProjectDirs::from("dev", "StemSplitter", "stem-splitter-core")
        .ok_or(StemError::CacheDirUnavailable)?;
    let mut p = PathBuf::from(proj.cache_dir());
    p.push("coreml");
    Ok(p)
}