From 485ec0ec0af80a0d63c10e94aebfc59b16aab46b Mon Sep 17 00:00:00 2001 From: Harvey Tindall Date: Thu, 27 Jan 2022 17:59:32 +0000 Subject: [PATCH] escape double quotes --- main.go | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/main.go b/main.go index 6a16b88..206ea44 100644 --- a/main.go +++ b/main.go @@ -150,6 +150,10 @@ func secondsToString(seconds int) string { // JSON returns json for waybar to consume. func playerJSON(p *player) string { + artist := strings.ReplaceAll(p.Artist, "\"", "\\\"") + album := strings.ReplaceAll(p.Album, "\"", "\\\"") + title := strings.ReplaceAll(p.Title, "\"", "\\\"") + name := strings.ReplaceAll(p.Name, "\"", "\\\"") symbol := PLAY out := "{\"class\": \"" if p.Playing { @@ -177,24 +181,24 @@ func playerJSON(p *player) string { case "SYMBOL": items = append(items, symbol) case "ARTIST": - if p.Artist != "" { - items = append(items, p.Artist) + if artist != "" { + items = append(items, artist) } case "ALBUM": - if p.Album != "" { - items = append(items, p.Album) + if album != "" { + items = append(items, album) } case "TITLE": - if p.Title != "" { - items = append(items, p.Title) + if title != "" { + items = append(items, title) } case "POSITION": if pos != "" && SHOW_POS { items = append(items, pos) } case "PLAYER": - if p.Name != "" { - items = append(items, p.Name) + if name != "" { + items = append(items, name) } } } @@ -214,14 +218,14 @@ func playerJSON(p *player) string { text += v + right } out += "\",\"text\":\"" + text + "\"," - out += "\"tooltip\":\"" + strings.ReplaceAll(p.Title, "&", "&") + "\\n" - if p.Artist != "" { - out += "by " + strings.ReplaceAll(p.Artist, "&", "&") + "\\n" + out += "\"tooltip\":\"" + strings.ReplaceAll(title, "&", "&") + "\\n" + if artist != "" { + out += "by " + strings.ReplaceAll(artist, "&", "&") + "\\n" } - if p.Album != "" { - out += "from " + strings.ReplaceAll(p.Album, "&", "&") + "\\n" + if album != "" { + out += "from " + strings.ReplaceAll(album, "&", "&") + "\\n" } - out += "(" + p.Name + ")\"}" + out += "(" + name + ")\"}" return out // return fmt.Sprintf("{\"class\":\"%s\",\"text\":\"%s\",\"tooltip\":\"%s\"}", data["class"], data["text"], data["tooltip"]) // out, err := json.Marshal(data)