func parseAcousticIdReply(reply string, existingTag ...editor.Tag) (editor.Tag, string) { var fields map[string]interface{} err := json.Unmarshal([]byte(reply), &fields) if err != nil || fields["status"] != "ok" { return editor.Tag{}, "" } if fields["results"] == nil { return editor.Tag{}, "" } results := fields["results"].([]interface{}) if len(results) == 0 { return editor.Tag{}, "" } result := results[0].(map[string]interface{}) if result["releases"] == nil { return editor.Tag{}, "" } releases := result["releases"].([]interface{}) if len(releases) == 0 { return editor.Tag{}, "" } release := pickRelease(releases, existingTag...) var tag editor.Tag tag.Year = getReleaseDate(release) tag.Artist = getReleaseArtist(release) tag.Album = getReleaseAlbum(release) tag.Title = getReleaseTitle(release) tag.Track = getReleaseTrack(release) return tag, release["id"].(string) }