From 31ba1431d0532d87e92336557497dfe265dca15f Mon Sep 17 00:00:00 2001 From: zarzet Date: Tue, 14 Apr 2026 02:19:34 +0700 Subject: [PATCH] fix: normalize extension codec for built-in fallback, remove dead Tidal ISRC --- go_backend/extension_providers.go | 16 ++++++++++++++++ go_backend/tidal.go | 12 ------------ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/go_backend/extension_providers.go b/go_backend/extension_providers.go index 1c778b53..85bb17a8 100644 --- a/go_backend/extension_providers.go +++ b/go_backend/extension_providers.go @@ -951,6 +951,19 @@ func isBuiltInDownloadProvider(providerID string) bool { } } +func normalizeQualityForBuiltIn(quality string) string { + switch strings.ToLower(strings.TrimSpace(quality)) { + case "alac", "hi_res_lossless", "lossless": + return "HI_RES_LOSSLESS" + case "atmos", "ac3", "dolby_atmos": + return "LOSSLESS" + case "aac", "aac-legacy": + return "LOSSLESS" + default: + return quality + } +} + func normalizeBuiltInMetadataTrack(track TrackMetadata, providerID string) ExtTrackMetadata { deezerID := "" tidalID := "" @@ -1496,7 +1509,10 @@ func DownloadWithExtensionFallback(req DownloadRequest) (*DownloadResponse, erro enrichExtraMetadataByISRC("DownloadWithExtensionFallback", req.ISRC, &req.Genre, &req.Label, &req.Copyright) } + origQuality := req.Quality + req.Quality = normalizeQualityForBuiltIn(req.Quality) result, err := tryBuiltInProvider(providerIDNormalized, req) + req.Quality = origQuality if err == nil && result.Success { result.Service = providerIDNormalized if req.Label != "" { diff --git a/go_backend/tidal.go b/go_backend/tidal.go index b818667e..226e66d3 100644 --- a/go_backend/tidal.go +++ b/go_backend/tidal.go @@ -2049,18 +2049,6 @@ func resolveTidalTrackForRequest(req DownloadRequest, downloader *TidalDownloade } } - if !gotTidalID && req.ISRC != "" { - GoLog("[%s] Trying direct Tidal ISRC search: %s\n", logPrefix, req.ISRC) - directTrack, directErr := downloader.SearchTrackByISRC(req.ISRC) - if directErr == nil && directTrack != nil && directTrack.ID > 0 { - trackID = directTrack.ID - gotTidalID = true - GoLog("[%s] Got Tidal ID %d from direct ISRC search\n", logPrefix, trackID) - } else if directErr != nil { - GoLog("[%s] Direct Tidal ISRC search failed: %v\n", logPrefix, directErr) - } - } - if !gotTidalID && req.ISRC != "" && req.TrackName != "" && req.ArtistName != "" { GoLog("[%s] Trying Tidal public metadata search with ISRC\n", logPrefix) searchTrack, searchErr := downloader.SearchTrackByMetadataWithISRC(