From 95391405fe093e4db82ef3e95475e83fd119448c Mon Sep 17 00:00:00 2001 From: WenZheng Li Date: Thu, 13 Aug 2026 22:41:59 -1000 Subject: [PATCH] fix(subsonic): update existing playlist in-place by passing playlistId --- src/client/subsonic.go | 9 ++++++++- src/main/main.go | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/client/subsonic.go b/src/client/subsonic.go index 8f2685ba..8c662789 100644 --- a/src/client/subsonic.go +++ b/src/client/subsonic.go @@ -240,12 +240,19 @@ func (c *Subsonic) CheckRefreshState() bool { } func (c *Subsonic) CreatePlaylist(tracks []*models.Track) error { + _ = c.SearchPlaylist() + var trackIDs strings.Builder for _, track := range tracks { // build songID parameters fmt.Fprintf(&trackIDs, "&songId=%s", track.ID) } - reqParam := fmt.Sprintf("createPlaylist?name=%s%s&f=json", url.QueryEscape(c.Cfg.PlaylistName), trackIDs.String()) + var reqParam string + if c.Cfg.PlaylistID != "" { + reqParam = fmt.Sprintf("createPlaylist?playlistId=%s&name=%s%s&f=json", url.QueryEscape(c.Cfg.PlaylistID), url.QueryEscape(c.Cfg.PlaylistName), trackIDs.String()) + } else { + reqParam = fmt.Sprintf("createPlaylist?name=%s%s&f=json", url.QueryEscape(c.Cfg.PlaylistName), trackIDs.String()) + } body, err := c.subsonicRequest(reqParam) if err != nil { diff --git a/src/main/main.go b/src/main/main.go index 6b32e5e3..76686687 100644 --- a/src/main/main.go +++ b/src/main/main.go @@ -200,7 +200,7 @@ func main() { slog.Error(err.Error(), "notify", true) os.Exit(1) } - if cfg.ReplacePlaylist { + if cfg.ReplacePlaylist && cfg.System != "subsonic" { err := client.DeletePlaylist() if err != nil { slog.Warn(err.Error(), "notify", true)