fix docker compose paths and subscription robustness

This commit is contained in:
ShukeBta
2026-07-02 03:35:52 +08:00
parent 204f7fb676
commit a1687eb746
20 changed files with 463 additions and 121 deletions
+26 -3
View File
@@ -104,7 +104,7 @@ func (s *STRMService) GenerateForAllLibraries(ctx context.Context, opts Generate
if err != nil {
return nil, err
}
baseOutputDir := resolveMappedDestinationPath(strings.TrimSpace(opts.OutputDir))
baseOutputDir := s.remapLegacySTRMOutputDir(resolveMappedDestinationPath(strings.TrimSpace(opts.OutputDir)))
result := &GenerateSTRMResult{LibraryID: "*", OutputDir: baseOutputDir}
for _, lib := range libraries {
select {
@@ -135,10 +135,10 @@ func (s *STRMService) GenerateForAllLibraries(ctx context.Context, opts Generate
}
func (s *STRMService) resolveSTRMOutputDir(ctx context.Context, lib *model.Library, opts GenerateSTRMOptions) string {
outputDir := resolveMappedDestinationPath(strings.TrimSpace(opts.OutputDir))
outputDir := s.remapLegacySTRMOutputDir(resolveMappedDestinationPath(strings.TrimSpace(opts.OutputDir)))
if (outputDir == "" || outputDir == ".") && s.repo.Setting != nil {
if saved, err := s.repo.Setting.Get(ctx, "strm.output_dir"); err == nil {
outputDir = resolveMappedDestinationPath(strings.TrimSpace(saved))
outputDir = s.remapLegacySTRMOutputDir(resolveMappedDestinationPath(strings.TrimSpace(saved)))
}
}
if outputDir == "" || outputDir == "." {
@@ -147,6 +147,29 @@ func (s *STRMService) resolveSTRMOutputDir(ctx context.Context, lib *model.Libra
return strmLibrarySpecificOutputDir(outputDir, lib)
}
func (s *STRMService) remapLegacySTRMOutputDir(outputDir string) string {
outputDir = filepath.Clean(strings.TrimSpace(outputDir))
if outputDir == "" || outputDir == "." || s == nil || s.cfg == nil {
return outputDir
}
dataDir := filepath.Clean(strings.TrimSpace(s.cfg.App.DataDir))
if dataDir == "" || dataDir == "." || sameLibraryPath(dataDir, "/app/data") {
return outputDir
}
legacy := "/app/data"
normalized := strings.TrimRight(cleanPathForVolumeMapping(outputDir), "/")
if sameLibraryPath(normalized, legacy) {
return dataDir
}
if strings.HasPrefix(strings.ToLower(normalized), legacy+"/") {
rel := strings.TrimPrefix(normalized[len(legacy):], "/")
if rel != "" {
return filepath.Join(dataDir, filepath.FromSlash(rel))
}
}
return outputDir
}
func (s *STRMService) saveSTRMGenerationSettings(ctx context.Context, outputDir string, opts GenerateSTRMOptions) {
if opts.SkipSettingsSave {
return