public static HomeModel ToHomeModel(this PlaylistResult source) { var target = new HomeModel { ArtistName = WebUtility.UrlDecode(source.ArtistName), ConcertCount = source.RequestedCount }; if (source.ArtistFound.HasValue && source.ArtistFound.Value == false) { target.ArtistFound = false; } else if (source.SongsFound.HasValue && source.SongsFound.Value == false) { target.SongsFound = false; } else { target.ActualCount = source.ActualCount; target.Songs = source.Songs; target.ArtistFound = true; target.SongsFound = true; } target.Url = source.Url; return(target); }
public void LogSetlist(PlaylistResult playlistResult) { var client = new AmazonDynamoDBClient(_config.Value.AccessKey, _config.Value.AccessKeySecret, RegionEndpoint.USEast1); var table = Table.LoadTable(client, "ReadySetGoSetlist"); var jsonText = JsonConvert.SerializeObject(playlistResult); var item = Document.FromJson(jsonText); var result = table.PutItemAsync(item).Result; }
public void LogSpotify(SpotifyUser user, PlaylistResult playlistResult, TokenResponse token) { var combinedLog = new CombinedLog { User = user, Playlist = playlistResult, Token = token }; var client = new AmazonDynamoDBClient(_config.Value.AccessKey, _config.Value.AccessKeySecret, RegionEndpoint.USEast1); var table = Table.LoadTable(client, "ReadySetGoSpotify"); var jsonText = JsonConvert.SerializeObject(combinedLog); var item = Document.FromJson(jsonText); var result = table.PutItemAsync(item).Result; }
public async Task DeletePlaylist(CommandContext ctx, [RemainingText, Description("Playlist name to delete")] string playlistName) { var interactive = ctx.Client.GetInteractivity(); if (playlistName == null) { await ctx.RespondAsync($"{DiscordEmoji.FromName(ctx.Client, ":no_entry:")} Please specify the playlist name you want to delete!"); return; } if (await PasteBin.playlistExists(playlistName)) { string deleteConfirm = $"{DiscordEmoji.FromName(ctx.Client, ":warning:")} Are you sure you want to delete the playlist {Formatter.Bold(playlistName)}?"; PlaylistResult deleteResult = await MusicCommandHelpers.DeletePlaylistHelperAsync(ctx, deleteConfirm, playlistName, PasteBin); switch (deleteResult) { case PlaylistResult.Cancelled: await ctx.RespondAsync($"{DiscordEmoji.FromName(ctx.Client, ":warning:")} Deletion cancelled"); break; case PlaylistResult.Failed: await ctx.RespondAsync($"{DiscordEmoji.FromName(ctx.Client, ":no_entry:")} There was a problem deleting the playlist"); break; case PlaylistResult.Successful: await ctx.RespondAsync($"{DiscordEmoji.FromName(ctx.Client, ":musical_note:")} Deleted the playlist {Formatter.Bold(playlistName)}"); break; default: await ctx.RespondAsync($"{DiscordEmoji.FromName(ctx.Client, ":REEE:")} You done goofed"); break; } } else { await ctx.RespondAsync($"{DiscordEmoji.FromName(ctx.Client, ":no_entry:")} Playlist {Formatter.Bold(playlistName)} doesn't exist!"); } }
public string CreatePlaylist(TokenResponse token, PlaylistResult playlist) { _client.DefaultRequestHeaders.Add("Authorization", $"Bearer {token.AccessToken}"); var user = GetUser(); _requestLogger.LogSpotify(user, playlist, token); var createdPlaylist = CreateNew(user, playlist.ArtistName); var tracklist = new Tracklist { Uris = new List <String>() }; foreach (var song in playlist.Songs) { try { tracklist.Uris.Add(GetTrack(playlist.ArtistName, song.Name).Uri); } catch (Exception) { try { foreach (var songName in song.Name.Split("/")) { tracklist.Uris.Add(GetTrack(playlist.ArtistName, songName.Trim()).Uri); } } catch (Exception) { } } } SetTracks(user, createdPlaylist, tracklist); return(createdPlaylist.ExternalUrls.Spotify); }
public async Task ExportAsync(CommandContext ctx, [RemainingText, Description("Name of the Playlist")] string playlistName) { var interactive = ctx.Client.GetInteractivity(); List <string> trackQueue = new List <string>(); //Check if queue is empty and there's nothing playing if (MusicData.PublicQueue.Count == 0 && MusicData.NowPlaying.Track == null) { await ctx.RespondAsync($"{ DiscordEmoji.FromName(ctx.Client, ":no_entry:")} There's nothing in the queue or playing right now to save!").ConfigureAwait(false); return; } if (String.IsNullOrWhiteSpace(playlistName)) { await ctx.RespondAsync($"{ DiscordEmoji.FromName(ctx.Client, ":no_entry:")} Playlist name is empty!").ConfigureAwait(false); return; } // If there's a song playing currently add it to the queue if (MusicData.NowPlaying.Track != null || MusicData.NowPlaying.Track.TrackString != null) { trackQueue.Add(MusicData.NowPlaying.Track.TrackString); } // Add each song in the queue foreach (var track in MusicData.PublicQueue) { trackQueue.Add(track.Track.TrackString); } // Check if playlist name already exists if (await PasteBin.playlistExists(playlistName)) { string overwriteConfirm = $"{DiscordEmoji.FromName(ctx.Client, ":warning:")} There's already a playlist with the name {Formatter.Bold(playlistName)}. Would you like to overwrite it?"; PlaylistResult deleteResult = await MusicCommandHelpers.DeletePlaylistHelperAsync(ctx, overwriteConfirm, playlistName, PasteBin); switch (deleteResult) { case PlaylistResult.Cancelled: await ctx.RespondAsync($"{DiscordEmoji.FromName(ctx.Client, ":warning:")} Overwrite cancelled"); return; case PlaylistResult.Failed: await ctx.RespondAsync($"{DiscordEmoji.FromName(ctx.Client, ":no_entry:")} There was a problem deleting the playlist"); return; case PlaylistResult.Successful: // Don't say anything if delete goes through - delete is just an intermediate step to overwriting break; default: await ctx.RespondAsync($"{DiscordEmoji.FromName(ctx.Client, ":REEE:")} You done goofed"); return; } } // Save the playlist var saveResult = await PasteBin.saveTracksAsync(trackQueue, playlistName); if (saveResult == PlaylistResult.Successful) { await ctx.RespondAsync($"{DiscordEmoji.FromName(ctx.Client, ":musical_note:")} Playlist {Formatter.Bold(playlistName)} saved!"); } else { await ctx.RespondAsync($"{DiscordEmoji.FromName(ctx.Client, ":no_entry:")} There was a problem saving the playlist {Formatter.Bold(playlistName)}."); } }