Exemplo n.º 1
0
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)
}