public bool Execute(Account user, object result, string args) { var api = _spotifyService.GetSpotifyWebApi(_spotifyService.GetSpotifyToken(user)); var tracks = result as List <SimpleTrack>; var playlists = _spotifyService.GetUserPlaylists(api, user); if (playlists == null || tracks == null) { return(false); } for (int i = 0; i < playlists.Items.Count; i++) { if (playlists.Items[i].Name == "AreaPlaylist") { Console.WriteLine("AreaPlaylist already exists, adding new track to it"); _spotifyService.AddTracksToPlaylist(api, tracks, playlists.Items[i].Id, user); return(true); } } FullPlaylist playlist = _spotifyService.CreatePlaylist(api, "AreaPlaylist", user); if (playlist != null) { Console.WriteLine("AreayPlaylist created and tracks added"); _spotifyService.AddTracksToPlaylist(api, tracks, playlist.Id, user); return(true); } Console.WriteLine("AreaPlaylist not found even after creating it"); return(false); }
/// <summary> /// Save the new playlist to the users spotify account /// </summary> /// <returns></returns> public async Task SavePlaylist() { var playlist = await SpotifyService.CreatePlaylist(AuthenticationService.User, AuthenticationService.AuthenticationToken, "Favorite Artists + Top Songs " + DateTime.Now.ToString(), "Created with Randify!", isPublic : true); try { var tracks = new List <Track>(); for (int i = 0; i < Tracks.Count; i++) { if (!string.IsNullOrWhiteSpace(Tracks[i].Id)) { tracks.Add(Tracks[i]); } if (i % 100 == 0) { await SpotifyService.AddTracksToPlaylist(AuthenticationService.User, AuthenticationService.AuthenticationToken, playlist, tracks); tracks.Clear(); } } await SpotifyService.AddTracksToPlaylist(AuthenticationService.User, AuthenticationService.AuthenticationToken, playlist, tracks); } catch (Exception ex) { PageException = ex; } ShowPlaylistSaved = true; StateHasChanged(); }
/// <summary> /// Randomize the currently playlist, remove all of the tracks from the playlist, add all of the tracks back in a random order /// </summary> /// <returns></returns> public async Task Randify() { if (IsRandifying || IsPlaylistLoading) { return; } IsRandifying = true; var currentPlaylist = CurrentPlaylist; var randomTracks = PlaylistTracks.ToList(); var listOfSkippedTracks = new List <PlaylistTrack>(); var tracks = new List <Track>(); // it looks overcomplicated and you're right, but the spotify endpoint has a limit of 100 songs try { for (int i = 0; i < randomTracks.Count; i++) { if (!string.IsNullOrEmpty(randomTracks[i].Track.Id) && !string.IsNullOrWhiteSpace(randomTracks[i].Track.Id)) { tracks.Add(randomTracks[i].Track); } else { listOfSkippedTracks.Add(randomTracks[i]); } if (i % 100 == 0) { await SpotifyService.RemoveTracksFromPlaylist(AuthenticationService.User, AuthenticationService.AuthenticationToken, currentPlaylist, tracks); tracks.Clear(); } } await SpotifyService.RemoveTracksFromPlaylist(AuthenticationService.User, AuthenticationService.AuthenticationToken, currentPlaylist, tracks); } catch (Exception ex) { PageException = ex; } tracks.Clear(); randomTracks = randomTracks .OrderBy(o => Guid.NewGuid()) .ToList(); // it looks overcomplicated and you're right, but the spotify endpoint has a limit of 100 songs try { for (int i = 0; i < randomTracks.Count; i++) { if (!string.IsNullOrEmpty(randomTracks[i].Track.Id) && !string.IsNullOrWhiteSpace(randomTracks[i].Track.Id)) { tracks.Add(randomTracks[i].Track); } if (i % 100 == 0) { await SpotifyService.AddTracksToPlaylist(AuthenticationService.User, AuthenticationService.AuthenticationToken, currentPlaylist, tracks); tracks.Clear(); } } await SpotifyService.AddTracksToPlaylist(AuthenticationService.User, AuthenticationService.AuthenticationToken, currentPlaylist, tracks); } catch (Exception ex) { PageException = ex; } foreach (var skippedTrack in listOfSkippedTracks) { randomTracks.Remove(skippedTrack); } listOfSkippedTracks.Reverse(); foreach (var skippedTrack in listOfSkippedTracks) { randomTracks.Insert(0, skippedTrack); } IsRandifying = false; await BindPlaylistAfterSort(randomTracks); }