From 627417dae33eda27e1dcc3072bde832c2bb4061e Mon Sep 17 00:00:00 2001 From: Deluan Date: Mon, 2 Dec 2024 09:35:39 -0500 Subject: [PATCH] fix(server): add disc number to fake path. Also revert "feat(server): enable "Report Real Path" by default" Signed-off-by: Deluan --- core/players.go | 1 - server/subsonic/helpers.go | 16 +++++++++++----- server/subsonic/helpers_test.go | 11 +++++++++-- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/core/players.go b/core/players.go index c3bd9ab39..3323516c6 100644 --- a/core/players.go +++ b/core/players.go @@ -45,7 +45,6 @@ func (p *players) Register(ctx context.Context, id, client, userAgent, ip string UserId: user.ID, Client: client, ScrobbleEnabled: true, - ReportRealPath: true, } log.Info(ctx, "Registering new player", "id", plr.ID, "client", client, "username", userName(ctx), "type", userAgent) } diff --git a/server/subsonic/helpers.go b/server/subsonic/helpers.go index 8b3e4be2c..81ae38ce5 100644 --- a/server/subsonic/helpers.go +++ b/server/subsonic/helpers.go @@ -187,14 +187,20 @@ func childFromMediaFile(ctx context.Context, mf model.MediaFile) responses.Child } func fakePath(mf model.MediaFile) string { - filename := mapSlashToDash(mf.Title) - if mf.TrackNumber != 0 { - filename = fmt.Sprintf("%02d - %s", mf.TrackNumber, filename) + builder := strings.Builder{} + + builder.WriteString(fmt.Sprintf("%s/%s/", sanitizeSlashes(mf.AlbumArtist), sanitizeSlashes(mf.Album))) + if mf.DiscNumber != 0 { + builder.WriteString(fmt.Sprintf("%02d-", mf.DiscNumber)) } - return fmt.Sprintf("%s/%s/%s.%s", mapSlashToDash(mf.AlbumArtist), mapSlashToDash(mf.Album), filename, mf.Suffix) + if mf.TrackNumber != 0 { + builder.WriteString(fmt.Sprintf("%02d - ", mf.TrackNumber)) + } + builder.WriteString(fmt.Sprintf("%s.%s", sanitizeSlashes(mf.Title), mf.Suffix)) + return builder.String() } -func mapSlashToDash(target string) string { +func sanitizeSlashes(target string) string { return strings.ReplaceAll(target, "/", "_") } diff --git a/server/subsonic/helpers_test.go b/server/subsonic/helpers_test.go index a21a614ca..cd50ae45f 100644 --- a/server/subsonic/helpers_test.go +++ b/server/subsonic/helpers_test.go @@ -27,11 +27,18 @@ var _ = Describe("helpers", func() { Expect(fakePath(mf)).To(Equal("Brock Berrigan/Point Pleasant/04 - Split Decision.flac")) }) }) + When("TrackNumber and DiscNumber are available", func() { + It("adds the trackNumber to the path", func() { + mf.TrackNumber = 4 + mf.DiscNumber = 1 + Expect(fakePath(mf)).To(Equal("Brock Berrigan/Point Pleasant/01-04 - Split Decision.flac")) + }) + }) }) - Describe("mapSlashToDash", func() { + Describe("sanitizeSlashes", func() { It("maps / to _", func() { - Expect(mapSlashToDash("AC/DC")).To(Equal("AC_DC")) + Expect(sanitizeSlashes("AC/DC")).To(Equal("AC_DC")) }) })