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")) }) })