A decentralized music tracking and discovery platform built on AT Protocol 🎵
listenbrainz spotify atproto lastfm musicbrainz scrobbling

fix(musicbrainz): add cleanTitle function to sanitize track names in search and hydrate handlers

Changed files
+26
musicbrainz
+26
musicbrainz/main.go
··· 7 7 "net/http" 8 8 "os" 9 9 "os/signal" 10 + "strings" 10 11 "time" 11 12 12 13 "github.com/labstack/echo/v4" ··· 71 72 return c.JSON(http.StatusBadRequest, map[string]string{"error": "invalid request"}) 72 73 } 73 74 75 + req.Track = cleanTitle(req.Track) 74 76 resp, _ := s.mb.SearchMusicBrainz(c.Request().Context(), req) 75 77 76 78 return c.JSON(http.StatusOK, resp) ··· 83 85 return c.JSON(http.StatusBadRequest, map[string]string{"error": "invalid request"}) 84 86 } 85 87 88 + req.Name = cleanTitle(req.Name) 86 89 resp, _ := musicbrainz.HydrateTrack(s.mb, req) 87 90 88 91 return c.JSON(http.StatusOK, resp) 89 92 } 93 + 94 + func cleanTitle(title string) string { 95 + removePatterns := []string{ 96 + " - Album Version (Edited)", 97 + " - Album Version (Explicit)", 98 + " - Album Version", 99 + " (Album Version (Edited))", 100 + " (Album Version (Explicit))", 101 + " (Album Version)", 102 + " - Edited", 103 + " - Explicit", 104 + " - Radio Edit", 105 + " (Edited)", 106 + " (Explicit)", 107 + " (Radio Edit)", 108 + } 109 + 110 + for _, pattern := range removePatterns { 111 + title = strings.ReplaceAll(title, pattern, "") 112 + } 113 + 114 + return strings.TrimSpace(title) 115 + }