func (spotify *Spotify) artistAlbums(artist *sconsify.Artist) { if simpleAlbumPage, err := spotify.client.GetArtistAlbums(webspotify.ID(artist.GetSpotifyID())); err == nil { folder := sconsify.InitFolder(artist.URI, "*"+artist.Name, make([]*sconsify.Playlist, 0)) if fullTracks, err := spotify.client.GetArtistsTopTracks(webspotify.ID(artist.GetSpotifyID()), "GB"); err == nil { tracks := make([]*sconsify.Track, len(fullTracks)) for i, track := range fullTracks { tracks[i] = sconsify.InitWebApiTrack(string(track.URI), artist, track.Name, track.TimeDuration().String()) } folder.AddPlaylist(sconsify.InitPlaylist(artist.URI, " "+artist.Name+" Top Tracks", tracks)) } infrastructure.Debugf("# of albums %v", len(simpleAlbumPage.Albums)) for _, simpleAlbum := range simpleAlbumPage.Albums { infrastructure.Debugf("AlbumsID %v = %v", simpleAlbum.URI, simpleAlbum.Name) playlist := sconsify.InitOnDemandPlaylist(string(simpleAlbum.URI), " "+simpleAlbum.Name, true, func(playlist *sconsify.Playlist) { infrastructure.Debugf("Album id %v", playlist.ToSpotifyID()) if simpleTrackPage, err := spotify.client.GetAlbumTracks(webspotify.ID(playlist.ToSpotifyID())); err == nil { infrastructure.Debugf("# of tracks %v", len(simpleTrackPage.Tracks)) for _, track := range simpleTrackPage.Tracks { playlist.AddTrack(sconsify.InitWebApiTrack(string(track.URI), artist, track.Name, track.TimeDuration().String())) } } }) folder.AddPlaylist(playlist) } spotify.events.ArtistAlbums(folder) } }
func (spotify *Spotify) loadNewReleases(playlist *sconsify.Playlist, webApiCache *WebApiCache) { if spotify.client != nil { if _, simplePlaylistPage, err := spotify.client.FeaturedPlaylistsOpt(&webspotify.PlaylistOptions{Options: *createWebSpotifyOptions(50, playlist.Playlists())}); err == nil { webApiCache.NewReleases = make([]webspotify.FullPlaylist, len(simplePlaylistPage.Playlists)) for i, webPlaylist := range simplePlaylistPage.Playlists { if fullPlaylist, err := spotify.client.GetPlaylist(webPlaylist.Owner.ID, webPlaylist.ID); err == nil { webApiCache.NewReleases[i] = *fullPlaylist } } } } if webApiCache.NewReleases != nil { for _, fullPlaylist := range webApiCache.NewReleases { tracks := make([]*sconsify.Track, len(fullPlaylist.Tracks.Tracks)) for i, track := range fullPlaylist.Tracks.Tracks { webArtist := track.Track.Artists[0] artist := sconsify.InitArtist(string(webArtist.URI), webArtist.Name) tracks[i] = sconsify.InitWebApiTrack(string(track.Track.URI), artist, track.Track.Name, track.Track.TimeDuration().String()) } playlist.AddPlaylist(sconsify.InitSubPlaylist(string(fullPlaylist.URI), fullPlaylist.Name, tracks)) } playlist.OpenFolder() } }
func (spotify *Spotify) loadSongs(playlist *sconsify.Playlist) { savedTrackPage, err := spotify.client.CurrentUsersTracksOpt(createWebSpotifyOptions(50, playlist.Tracks())) if err != nil { return } for _, track := range savedTrackPage.Tracks { webArtist := track.Artists[0] artist := sconsify.InitArtist(string(webArtist.URI), webArtist.Name) playlist.AddTrack(sconsify.InitWebApiTrack(string(track.URI), artist, track.Name, track.TimeDuration().String())) } }
func (spotify *Spotify) artistTopTrack(artist *sconsify.Artist) { if fullTracks, err := spotify.client.GetArtistsTopTracks(webspotify.ID(artist.GetSpotifyID()), "GB"); err == nil { tracks := make([]*sconsify.Track, len(fullTracks)) for i, track := range fullTracks { tracks[i] = sconsify.InitWebApiTrack(string(track.URI), artist, track.Name, track.TimeDuration().String()) } topTracksPlaylist := sconsify.InitPlaylist(artist.URI, artist.Name, tracks) spotify.events.ArtistTopTracks(topTracksPlaylist) } }
func (spotify *Spotify) loadAlbums(playlist *sconsify.Playlist) { savedAlbumPage, err := spotify.client.CurrentUsersAlbumsOpt(createWebSpotifyOptions(50, playlist.Playlists())) if err != nil { return } for _, album := range savedAlbumPage.Albums { tracks := make([]*sconsify.Track, len(album.Tracks.Tracks)) for i, track := range album.Tracks.Tracks { webArtist := track.Artists[0] artist := sconsify.InitArtist(string(webArtist.URI), webArtist.Name) tracks[i] = sconsify.InitWebApiTrack(string(track.URI), artist, track.Name, track.TimeDuration().String()) } playlist.AddPlaylist(sconsify.InitSubPlaylist(string(album.ID), album.Name, tracks)) } playlist.OpenFolder() }
func (spotify *Spotify) loadNewReleases(playlist *sconsify.Playlist) { _, simplePlaylistPage, err := spotify.client.FeaturedPlaylistsOpt(&webspotify.PlaylistOptions{Options: *createWebSpotifyOptions(50, playlist.Playlists())}) if err != nil { return } for _, album := range simplePlaylistPage.Playlists { fullPlaylist, err := spotify.client.GetPlaylist(album.Owner.ID, album.ID) if err == nil { tracks := make([]*sconsify.Track, len(fullPlaylist.Tracks.Tracks)) for i, track := range fullPlaylist.Tracks.Tracks { webArtist := track.Track.Artists[0] artist := sconsify.InitArtist(string(webArtist.URI), webArtist.Name) tracks[i] = sconsify.InitWebApiTrack(string(track.Track.URI), artist, track.Track.Name, track.Track.TimeDuration().String()) } playlist.AddPlaylist(sconsify.InitSubPlaylist(string(album.ID), album.Name, tracks)) } playlist.OpenFolder() } }
func (spotify *Spotify) loadAlbums(playlist *sconsify.Playlist, webApiCache *WebApiCache) { if spotify.client != nil { if savedAlbumPage, err := spotify.client.CurrentUsersAlbumsOpt(createWebSpotifyOptions(50, playlist.Playlists())); err == nil { webApiCache.Albums = savedAlbumPage.Albums } } if webApiCache.Albums != nil { for _, album := range webApiCache.Albums { tracks := make([]*sconsify.Track, len(album.Tracks.Tracks)) for j, track := range album.Tracks.Tracks { webArtist := track.Artists[0] artist := sconsify.InitArtist(string(webArtist.URI), webArtist.Name) tracks[j] = sconsify.InitWebApiTrack(string(track.URI), artist, track.Name, track.TimeDuration().String()) } playlist.AddPlaylist(sconsify.InitSubPlaylist(string(album.URI), album.Name, tracks)) } playlist.OpenFolder() } }
func (spotify *Spotify) loadSongs(playlist *sconsify.Playlist, webApiCache *WebApiCache) { var partialSongs []webspotify.SavedTrack if spotify.client != nil { if savedTrackPage, err := spotify.client.CurrentUsersTracksOpt(createWebSpotifyOptions(50, playlist.Tracks())); err == nil { partialSongs = savedTrackPage.Tracks if webApiCache.Songs == nil { webApiCache.Songs = make([]webspotify.SavedTrack, 0) } webApiCache.Songs = append(webApiCache.Songs, partialSongs...) } } if webApiCache.Songs != nil { if partialSongs == nil { partialSongs = webApiCache.Songs } for i, track := range partialSongs { webApiCache.Songs[i] = track webArtist := track.Artists[0] artist := sconsify.InitArtist(string(webArtist.URI), webArtist.Name) playlist.AddTrack(sconsify.InitWebApiTrack(string(track.URI), artist, track.Name, track.TimeDuration().String())) } } }
func (spotify *Spotify) search(query string) { playlists := sconsify.InitPlaylists() name := " " + query playlist := sconsify.InitSearchPlaylist(name, name, func(playlist *sconsify.Playlist) { options := createWebSpotifyOptions(50, playlist.Tracks()) if searchResult, err := spotify.getWebApiClient().SearchOpt(query, webspotify.SearchTypeTrack, options); err == nil { numberOfTracks := len(searchResult.Tracks.Tracks) infrastructure.Debugf("Search '%v' returned %v track(s)", query, numberOfTracks) for _, track := range searchResult.Tracks.Tracks { webArtist := track.Artists[0] artist := sconsify.InitArtist(string(webArtist.URI), webArtist.Name) playlist.AddTrack(sconsify.InitWebApiTrack(string(track.URI), artist, track.Name, track.TimeDuration().String())) infrastructure.Debugf("\tTrack '%v' (%v)", track.URI, track.Name) } } else { infrastructure.Debugf("Spotify search returning error: %v", err) } }) playlist.ExecuteLoad() playlists.AddPlaylist(playlist) spotify.events.NewPlaylist(playlists) }