mirror of
https://github.com/truewhile/MeBox.git
synced 2026-10-06 21:36:37 +08:00
fix library deletion and strm path handling
This commit is contained in:
@@ -29,6 +29,7 @@ func strmLibrarySpecificOutputDir(base string, lib *model.Library) string {
|
||||
if outputDir == "" || outputDir == "." || lib == nil {
|
||||
return outputDir
|
||||
}
|
||||
outputDir = stripSTRMLibraryCategoryAfterRoot(outputDir)
|
||||
subdir := strmLibraryOutputSubdir(*lib)
|
||||
if subdir == "" || strmPathHasSuffix(outputDir, subdir) || pathAlreadyEndsWith(outputDir, filepath.Base(subdir)) {
|
||||
return outputDir
|
||||
@@ -36,6 +37,34 @@ func strmLibrarySpecificOutputDir(base string, lib *model.Library) string {
|
||||
return filepath.Join(outputDir, subdir)
|
||||
}
|
||||
|
||||
func stripSTRMLibraryCategoryAfterRoot(pathValue string) string {
|
||||
normalized := filepath.ToSlash(filepath.Clean(strings.TrimSpace(pathValue)))
|
||||
parts := strings.Split(normalized, "/")
|
||||
strmIndex := -1
|
||||
for i, part := range parts {
|
||||
if strings.EqualFold(strings.TrimSpace(part), "strm") {
|
||||
strmIndex = i
|
||||
}
|
||||
}
|
||||
if strmIndex < 0 || strmIndex >= len(parts)-1 {
|
||||
return pathValue
|
||||
}
|
||||
tail := make([]string, 0, len(parts)-strmIndex-1)
|
||||
for _, part := range parts[strmIndex+1:] {
|
||||
if strings.TrimSpace(part) != "" {
|
||||
tail = append(tail, part)
|
||||
}
|
||||
}
|
||||
if len(strmCategoryPartsFromPath(tail)) == 0 {
|
||||
return pathValue
|
||||
}
|
||||
root := strings.Join(parts[:strmIndex+1], "/")
|
||||
if root == "" {
|
||||
return pathValue
|
||||
}
|
||||
return filepath.FromSlash(root)
|
||||
}
|
||||
|
||||
func strmPathHasSuffix(pathValue, suffix string) bool {
|
||||
pathValue = strings.Trim(filepath.ToSlash(filepath.Clean(strings.TrimSpace(pathValue))), "/")
|
||||
suffix = strings.Trim(filepath.ToSlash(filepath.Clean(strings.TrimSpace(suffix))), "/")
|
||||
|
||||
Reference in New Issue
Block a user