diff --git a/src-tauri/src/commands/media_analysis.rs b/src-tauri/src/commands/media_analysis.rs index e4dc8a5..f3f569f 100644 --- a/src-tauri/src/commands/media_analysis.rs +++ b/src-tauri/src/commands/media_analysis.rs @@ -51,15 +51,19 @@ pub async fn extract_waveform_tiers( pub async fn extract_thumbnails( file_path: String, duration: f64, + output_dir: Option, ) -> Result, String> { eprintln!( "[video-clipper:thumbnails] starting for '{}' (duration={})", file_path, duration ); let result = tokio::task::spawn_blocking(move || { - let temp_dir = std::env::temp_dir() - .join("video-clipper-thumbs") - .join(uuid::Uuid::new_v4().to_string()); + let temp_dir = match output_dir { + Some(dir) => std::path::PathBuf::from(dir), + 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(); thumbnail_extractor::extract_thumbnails(&file_path, duration, &temp_dir_str) }) diff --git a/src/lib/bindings/mediaAnalysis.ts b/src/lib/bindings/mediaAnalysis.ts index 223a69a..bb225dc 100644 --- a/src/lib/bindings/mediaAnalysis.ts +++ b/src/lib/bindings/mediaAnalysis.ts @@ -41,11 +41,13 @@ export async function extractWaveformTiers( export async function extractThumbnails( filePath: string, - duration: number + duration: number, + outputDir?: string ): Promise { return invoke('extract_thumbnails', { filePath, duration, + outputDir: outputDir ?? null, }); }