From 8ab52959e835c7e58a599fe01ff87105ea2bc88d Mon Sep 17 00:00:00 2001 From: zarzet Date: Wed, 14 Jan 2026 00:57:04 +0700 Subject: [PATCH] refactor: simplify parallel download result handling in tidal/qobuz --- go_backend/qobuz.go | 17 +++++++---------- go_backend/tidal.go | 17 +++++++---------- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/go_backend/qobuz.go b/go_backend/qobuz.go index 923f1ed..5ebd83d 100644 --- a/go_backend/qobuz.go +++ b/go_backend/qobuz.go @@ -789,12 +789,10 @@ func getQobuzDownloadURLParallel(apis []string, trackID int64, quality string) ( // Collect results - return first success var errors []string - var firstSuccess *qobuzAPIResult for i := 0; i < len(apis); i++ { result := <-resultChan - if result.err == nil && firstSuccess == nil { - firstSuccess = &result + if result.err == nil { GoLog("[Qobuz] [Parallel] ✓ Got response from %s in %v\n", result.apiURL, result.duration) // Drain remaining results to avoid goroutine leaks @@ -805,14 +803,13 @@ func getQobuzDownloadURLParallel(apis []string, trackID int64, quality string) ( }(len(apis) - i - 1) GoLog("[Qobuz] [Parallel] Total time: %v (first success)\n", time.Since(startTime)) - return firstSuccess.apiURL, firstSuccess.downloadURL, nil - } else if result.err != nil { - errMsg := result.err.Error() - if len(errMsg) > 50 { - errMsg = errMsg[:50] + "..." - } - errors = append(errors, fmt.Sprintf("%s: %s", result.apiURL, errMsg)) + return result.apiURL, result.downloadURL, nil } + errMsg := result.err.Error() + if len(errMsg) > 50 { + errMsg = errMsg[:50] + "..." + } + errors = append(errors, fmt.Sprintf("%s: %s", result.apiURL, errMsg)) } GoLog("[Qobuz] [Parallel] All %d APIs failed in %v\n", len(apis), time.Since(startTime)) diff --git a/go_backend/tidal.go b/go_backend/tidal.go index a8dbdac..a666382 100644 --- a/go_backend/tidal.go +++ b/go_backend/tidal.go @@ -738,13 +738,11 @@ func getDownloadURLParallel(apis []string, trackID int64, quality string) (strin // Collect results - return first success var errors []string - var firstSuccess *tidalAPIResult for i := 0; i < len(apis); i++ { result := <-resultChan - if result.err == nil && firstSuccess == nil { + if result.err == nil { // First success - use this one - firstSuccess = &result GoLog("[Tidal] [Parallel] ✓ Got response from %s (%d-bit/%dHz) in %v\n", result.apiURL, result.info.BitDepth, result.info.SampleRate, result.duration) @@ -756,14 +754,13 @@ func getDownloadURLParallel(apis []string, trackID int64, quality string) (strin }(len(apis) - i - 1) GoLog("[Tidal] [Parallel] Total time: %v (first success)\n", time.Since(startTime)) - return firstSuccess.apiURL, firstSuccess.info, nil - } else if result.err != nil { - errMsg := result.err.Error() - if len(errMsg) > 50 { - errMsg = errMsg[:50] + "..." - } - errors = append(errors, fmt.Sprintf("%s: %s", result.apiURL, errMsg)) + return result.apiURL, result.info, nil } + errMsg := result.err.Error() + if len(errMsg) > 50 { + errMsg = errMsg[:50] + "..." + } + errors = append(errors, fmt.Sprintf("%s: %s", result.apiURL, errMsg)) } GoLog("[Tidal] [Parallel] All %d APIs failed in %v\n", len(apis), time.Since(startTime))