diff --git a/src/client/subsonic.go b/src/client/subsonic.go index 8f2685b..8c66278 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 6b32e5e..7668668 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)