diff --git a/go_backend/amazon.go b/go_backend/amazon.go index 753e581..7597d32 100644 --- a/go_backend/amazon.go +++ b/go_backend/amazon.go @@ -405,7 +405,7 @@ func downloadFromAmazon(req DownloadRequest) (AmazonDownloadResult, error) { GoLog("[Amazon] No lyrics available from parallel fetch\n") } - GoLog("[Amazon] ✓ Downloaded successfully from Amazon Music\n") + GoLog("[Amazon] Downloaded successfully from Amazon Music\n") quality, err := GetAudioQuality(outputPath) if err != nil { diff --git a/go_backend/logbuffer.go b/go_backend/logbuffer.go index 7537a78..382f18d 100644 --- a/go_backend/logbuffer.go +++ b/go_backend/logbuffer.go @@ -150,11 +150,11 @@ func GoLog(format string, args ...interface{}) { // Determine level from message content msgLower := strings.ToLower(message) - if strings.Contains(msgLower, "error") || strings.Contains(msgLower, "failed") || strings.HasPrefix(message, "✗") { + if strings.Contains(msgLower, "error") || strings.Contains(msgLower, "failed") { level = "ERROR" } else if strings.Contains(msgLower, "warning") || strings.Contains(msgLower, "warn") { level = "WARN" - } else if strings.HasPrefix(message, "✓") || strings.Contains(msgLower, "success") || strings.Contains(msgLower, "match found") { + } else if strings.Contains(msgLower, "success") || strings.Contains(msgLower, "match found") { level = "INFO" } else if strings.Contains(msgLower, "searching") || strings.Contains(msgLower, "trying") || strings.Contains(msgLower, "found") { level = "DEBUG" diff --git a/go_backend/qobuz.go b/go_backend/qobuz.go index a07a5b9..2e1d7e6 100644 --- a/go_backend/qobuz.go +++ b/go_backend/qobuz.go @@ -752,12 +752,12 @@ func (q *QobuzDownloader) SearchTrackByMetadataWithDuration(trackName, artistNam if len(durationMatches) > 0 { for _, track := range durationMatches { if track.MaximumBitDepth >= 24 { - GoLog("[Qobuz] ✓ Match found: '%s' by '%s' (title+duration verified, hi-res)\n", + GoLog("[Qobuz] Match found: '%s' by '%s' (title+duration verified, hi-res)\n", track.Title, track.Performer.Name) return track, nil } } - GoLog("[Qobuz] ✓ Match found: '%s' by '%s' (title+duration verified)\n", + GoLog("[Qobuz] Match found: '%s' by '%s' (title+duration verified)\n", durationMatches[0].Title, durationMatches[0].Performer.Name) return durationMatches[0], nil } @@ -768,14 +768,14 @@ func (q *QobuzDownloader) SearchTrackByMetadataWithDuration(trackName, artistNam // No duration verification, return best quality from title matches for _, track := range tracksToCheck { if track.MaximumBitDepth >= 24 { - GoLog("[Qobuz] ✓ Match found: '%s' by '%s' (title verified, hi-res)\n", + GoLog("[Qobuz] Match found: '%s' by '%s' (title verified, hi-res)\n", track.Title, track.Performer.Name) return track, nil } } if len(tracksToCheck) > 0 { - GoLog("[Qobuz] ✓ Match found: '%s' by '%s' (title verified)\n", + GoLog("[Qobuz] Match found: '%s' by '%s' (title verified)\n", tracksToCheck[0].Title, tracksToCheck[0].Performer.Name) return tracksToCheck[0], nil } @@ -872,7 +872,7 @@ func getQobuzDownloadURLParallel(apis []string, trackID int64, quality string) ( for i := 0; i < len(apis); i++ { result := <-resultChan if result.err == nil { - GoLog("[Qobuz] [Parallel] ✓ Got response from %s in %v\n", result.apiURL, result.duration) + GoLog("[Qobuz] [Parallel] Got response from %s in %v\n", result.apiURL, result.duration) // Drain remaining results to avoid goroutine leaks go func(remaining int) { diff --git a/go_backend/tidal.go b/go_backend/tidal.go index 9b64aa9..09d9e74 100644 --- a/go_backend/tidal.go +++ b/go_backend/tidal.go @@ -122,14 +122,16 @@ func NewTidalDownloader() *TidalDownloader { // GetAvailableAPIs returns list of available Tidal APIs func (t *TidalDownloader) GetAvailableAPIs() []string { encodedAPIs := []string{ - "dGlkYWwua2lub3BsdXMub25saW5l", - "dGlkYWwtYXBpLmJpbmltdW0ub3Jn", - "dHJpdG9uLnNxdWlkLnd0Zg==", - "dm9nZWwucXFkbC5zaXRl", - "bWF1cy5xcWRsLnNpdGU=", - "aHVuZC5xcWRsLnNpdGU=", - "a2F0emUucXFkbC5zaXRl", - "d29sZi5xcWRsLnNpdGU=", + "dGlkYWwua2lub3BsdXMub25saW5l", // tidal.kinoplus.online + "dGlkYWwtYXBpLmJpbmltdW0ub3Jn", // tidal-api.binimum.org + "dHJpdG9uLnNxdWlkLnd0Zg==", // triton.squid.wtf + "aGlmaS1vbmUuc3BvdGlzYXZlci5uZXQ=", // hifi-one.spotisaver.net + "aGlmaS10d28uc3BvdGlzYXZlci5uZXQ=", // hifi-two.spotisaver.net + "dm9nZWwucXFkbC5zaXRl", // vogel.qqdl.site + "bWF1cy5xcWRsLnNpdGU=", // maus.qqdl.site + "aHVuZC5xcWRsLnNpdGU=", // hund.qqdl.site + "a2F0emUucXFkbC5zaXRl", // katze.qqdl.site + "d29sZi5xcWRsLnNpdGU=", // wolf.qqdl.site } var apis []string @@ -442,13 +444,13 @@ func (t *TidalDownloader) SearchTrackByMetadataWithISRC(trackName, artistName, s durationDiff = -durationDiff } if durationDiff <= 3 { - GoLog("[Tidal] ✓ ISRC match: '%s' (duration verified)\n", track.Title) + GoLog("[Tidal] ISRC match: '%s' (duration verified)\n", track.Title) return track, nil } GoLog("[Tidal] ISRC match but duration mismatch (expected %ds, got %ds), continuing...\n", expectedDuration, track.Duration) } else { - GoLog("[Tidal] ✓ ISRC match: '%s'\n", track.Title) + GoLog("[Tidal] ISRC match: '%s'\n", track.Title) return track, nil } } @@ -487,7 +489,7 @@ func (t *TidalDownloader) SearchTrackByMetadataWithISRC(trackName, artistName, s } if len(durationVerifiedMatches) > 0 { - GoLog("[Tidal] ✓ ISRC match with duration verification: '%s' (expected %ds, found %ds)\n", + GoLog("[Tidal] ISRC match with duration verification: '%s' (expected %ds, found %ds)\n", durationVerifiedMatches[0].Title, expectedDuration, durationVerifiedMatches[0].Duration) return durationVerifiedMatches[0], nil } @@ -498,11 +500,11 @@ func (t *TidalDownloader) SearchTrackByMetadataWithISRC(trackName, artistName, s expectedDuration, isrcMatches[0].Duration) } - GoLog("[Tidal] ✓ ISRC match (no duration verification): '%s'\n", isrcMatches[0].Title) + GoLog("[Tidal] ISRC match (no duration verification): '%s'\n", isrcMatches[0].Title) return isrcMatches[0], nil } - GoLog("[Tidal] ✗ No ISRC match found for: %s\n", spotifyISRC) + GoLog("[Tidal] No ISRC match found for: %s\n", spotifyISRC) return nil, fmt.Errorf("ISRC mismatch: no track found with ISRC %s on Tidal", spotifyISRC) } @@ -669,7 +671,7 @@ func getDownloadURLParallel(apis []string, trackID int64, quality string) (strin for i := 0; i < len(apis); i++ { result := <-resultChan if result.err == nil { - GoLog("[Tidal] [Parallel] ✓ Got response from %s (%d-bit/%dHz) in %v\n", + GoLog("[Tidal] [Parallel] Got response from %s (%d-bit/%dHz) in %v\n", result.apiURL, result.info.BitDepth, result.info.SampleRate, result.duration) go func(remaining int) {