Files
beStream/src-tauri/src/video_utils.rs
2025-12-19 13:48:48 +01:00

37 lines
956 B
Rust

use std::path::{Path, PathBuf};
const VIDEO_EXTENSIONS: &[&str] = &[".mp4", ".mkv", ".avi", ".mov", ".webm", ".m4v"];
pub fn is_video_file(path: &Path) -> bool {
if let Some(ext) = path.extension() {
if let Some(ext_str) = ext.to_str() {
return VIDEO_EXTENSIONS.contains(&ext_str.to_lowercase().as_str());
}
}
false
}
pub fn find_largest_video_file(files: &[(String, u64)]) -> Option<(usize, String, u64)> {
let video_files: Vec<_> = files
.iter()
.enumerate()
.filter(|(_, (name, _))| {
let path = Path::new(name);
is_video_file(path)
})
.map(|(idx, (name, size))| (idx, name.clone(), *size))
.collect();
if video_files.is_empty() {
return None;
}
// Find the largest video file
video_files
.into_iter()
.max_by_key(|(_, _, size)| *size)
.map(|(idx, name, size)| (idx, name, size))
}