package model import "strings" type ( Artist struct { ID string `json:"id"` Name string `json:"name"` Website string `json:"website"` Avatar string `json:"avatar"` } ) func (artist Artist) GetWebsite() string { return artist.Website } func (artist Artist) GetAvatar() string { if artist.Avatar == "" { return "/img/default-avatar.png" } return artist.Avatar } func (release FullRelease) GetUniqueArtists(only_primary bool) []*Artist { var artists = []*Artist{} for _, credit := range release.Credits { if only_primary && !credit.Primary { continue } exists := false for _, a := range artists { if a.ID == credit.Artist.ID { exists = true break } } if exists { continue } artists = append(artists, &credit.Artist) } return artists } func (release FullRelease) GetUniqueArtistNames(only_primary bool) []string { var names = []string{} for _, artist := range release.GetUniqueArtists(only_primary) { names = append(names, artist.Name) } return names } func (release FullRelease) PrintArtists(only_primary bool, ampersand bool) string { names := release.GetUniqueArtistNames(only_primary) if len(names) == 0 { return "Unknown Artist" } else if len(names) == 1 { return names[0] } if ampersand { res := strings.Join(names[:len(names)-1], ", ") res += " & " + names[len(names)-1] return res } else { return strings.Join(names[:], ", ") } }