feat: add optional output_dir param to extract_thumbnails

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-22 14:43:24 -04:00
parent b7fb7929f0
commit 6818938cb0
2 changed files with 10 additions and 4 deletions

View File

@@ -51,15 +51,19 @@ pub async fn extract_waveform_tiers(
pub async fn extract_thumbnails( pub async fn extract_thumbnails(
file_path: String, file_path: String,
duration: f64, duration: f64,
output_dir: Option<String>,
) -> Result<Vec<ThumbnailSpritesheet>, String> { ) -> Result<Vec<ThumbnailSpritesheet>, String> {
eprintln!( eprintln!(
"[video-clipper:thumbnails] starting for '{}' (duration={})", "[video-clipper:thumbnails] starting for '{}' (duration={})",
file_path, duration file_path, duration
); );
let result = tokio::task::spawn_blocking(move || { let result = tokio::task::spawn_blocking(move || {
let temp_dir = std::env::temp_dir() let temp_dir = match output_dir {
.join("video-clipper-thumbs") Some(dir) => std::path::PathBuf::from(dir),
.join(uuid::Uuid::new_v4().to_string()); None => std::env::temp_dir()
.join("video-clipper-thumbs")
.join(uuid::Uuid::new_v4().to_string()),
};
let temp_dir_str = temp_dir.to_string_lossy().to_string(); let temp_dir_str = temp_dir.to_string_lossy().to_string();
thumbnail_extractor::extract_thumbnails(&file_path, duration, &temp_dir_str) thumbnail_extractor::extract_thumbnails(&file_path, duration, &temp_dir_str)
}) })

View File

@@ -41,11 +41,13 @@ export async function extractWaveformTiers(
export async function extractThumbnails( export async function extractThumbnails(
filePath: string, filePath: string,
duration: number duration: number,
outputDir?: string
): Promise<ThumbnailSpritesheet[]> { ): Promise<ThumbnailSpritesheet[]> {
return invoke<ThumbnailSpritesheet[]>('extract_thumbnails', { return invoke<ThumbnailSpritesheet[]>('extract_thumbnails', {
filePath, filePath,
duration, duration,
outputDir: outputDir ?? null,
}); });
} }