func (sf *APISongFreaksTrack) ToSong() (*Song, error) { if sferr := sf.HasError(); sferr != nil { return nil, sferr } song := NewSong() song.Id = sf.Track.Id song.TrackGroupId = sf.Track.TrackGroupId song.AMG = sf.Track.AMG song.UrlSlug = sf.Track.UrlSlug song.IsInstrumental = sf.Track.IsInstrumental song.Viewable = sf.Track.Viewable song.Duration = utils.ToSeconds(sf.Track.Duration) song.Lyricid = sf.Track.LyricId song.HasLrc = sf.Track.HasLrc song.TrackNumber = sf.Track.TrackNumber song.DiscNumber = sf.Track.DiscNumber song.Title = sf.Track.Title song.Rating = dna.IntArray{sf.Track.Rating.AverageRating.ToInt(), sf.Track.Rating.UserRating, sf.Track.Rating.TotalRatings} song.Albumid = sf.Track.Album.Id artistIds := dna.IntArray{} artists := dna.StringArray{} for _, artist := range sf.Track.Artists { artistIds.Push(artist.Id) artists.Push(artist.Name) } song.Artistids = artistIds song.Artists = artists if sf.Track.Lrc.Lines != nil && len(sf.Track.Lrc.Lines) > 0 { lines, err := json.Marshal(sf.Track.Lrc.Lines) if err == nil { song.Lrc = dna.String(string(lines)) } } song.Link = sf.Track.Link song.Lyric = sf.Track.Lyrics if song.Lyric != "" { song.HasLyric = true } song.Copyright = sf.Track.Copyright song.Writer = sf.Track.Writer song.SubmittedLyric = sf.Track.SubmittedLyric song.Checktime = time.Now() return song, nil }
func (apiSong *APIFullSong) FillSong(song *Song) { song.Id = apiSong.Track.Id song.Title = apiSong.Track.Title artists := dna.StringArray{} for _, artist := range apiSong.Track.Artists { artists.Push(artist.Name) } song.Artists = artists artistids := dna.IntArray{} for _, artist := range apiSong.Track.Artists { artistids.Push(artist.Id) } song.Artistids = artistids song.Albumid = apiSong.Track.Album.Id song.AlbumTitle = apiSong.Track.Album.Title song.Duration = utils.ToSeconds(apiSong.Track.Duration) song.Instrumental = apiSong.Track.Instrumental song.Viewable = apiSong.Track.Viewable song.HasLrc = apiSong.Track.HasLrc song.LrcVerified = apiSong.Track.LrcVerified song.Lyricid = apiSong.Track.Lyricid song.Lyric = apiSong.Track.Lyrics song.Copyright = apiSong.Track.Copyright song.Writers = apiSong.Track.Writer // Mon Jan 2 15:04:05 MST 2006 if apiSong.Track.LastUpdate != "" { lastUpdate, err := time.Parse("2006-01-02 15:04:05", apiSong.Track.LastUpdate.String()) if err == nil { song.DateUpdated = lastUpdate } else { dna.Log(err.Error(), " Song ID:", song.Id, " GOT:", apiSong.Track.LastUpdate, "\n\n") } } }