func buildCollection(h group, c index.Collection) group { getField := func(f string, g index.Group, c index.Collection) interface{} { if StringSliceEqual(g.Field(f), c.Field(f)) { return nil } return g.Field(f) } for _, k := range c.Keys() { g := c.Get(k) g = index.FirstTrackAttr(attr.Strings("AlbumArtist"), g) g = index.CommonGroupAttr([]attr.Interface{attr.Strings("Artist")}, g) h.Groups = append(h.Groups, group{ Name: g.Name(), Key: k, AlbumArtist: getField("AlbumArtist", g, c), Artist: getField("Artist", g, c), }) } return h }