fix: 修复导出路径中的Windows UNC前缀问题

- 添加normalize_windows_path函数清理路径格式
- 移除导出结果中的\\\\?\\ UNC前缀
- 确保导出的JSON文件中包含标准Windows路径格式
- 提升剪映导入兼容性
This commit is contained in:
imeepos 2025-07-16 22:39:39 +08:00
parent 0495a32c74
commit fb6b345188
1 changed files with 14 additions and 2 deletions

View File

@ -300,6 +300,15 @@ pub struct MatchingStatistics {
}
impl TemplateMatchingResultService {
/// 清理Windows路径格式移除UNC前缀
fn normalize_windows_path(path: &str) -> String {
// 移除 \\?\ 前缀Windows长路径UNC格式
if path.starts_with("\\\\?\\") {
path.strip_prefix("\\\\?\\").unwrap_or(path).to_string()
} else {
path.to_string()
}
}
/// 导出匹配结果到剪映格式
/// 根据模板匹配结果生成剪映可导入的 draft_content.json 文件
pub async fn export_to_jianying(
@ -378,6 +387,9 @@ impl TemplateMatchingResultService {
let material_segment = material_repository.get_segment_by_id_sync(&segment_result.material_segment_id)?
.ok_or_else(|| anyhow!("找不到素材片段: {}", segment_result.material_segment_id))?;
// 清理文件路径格式
let normalized_path = Self::normalize_windows_path(&material_segment.file_path);
// 创建剪映视频素材
let video = JianYingVideo {
aigc_type: "none".to_string(),
@ -414,7 +426,7 @@ impl TemplateMatchingResultService {
local_id: String::new(),
local_material_id: Uuid::new_v4().to_string(),
material_id: String::new(),
material_name: Path::new(&material_segment.file_path)
material_name: Path::new(&normalized_path)
.file_name()
.and_then(|n| n.to_str())
.unwrap_or("unknown.mp4")
@ -431,7 +443,7 @@ impl TemplateMatchingResultService {
media_path: String::new(),
object_locked: None,
origin_material_id: String::new(),
path: material_segment.file_path.clone(), // 使用匹配的素材路径
path: normalized_path.clone(), // 使用清理后的素材路径
picture_from: "none".to_string(),
picture_set_category_id: String::new(),
picture_set_category_name: String::new(),