private async void lnkImportPlaylist_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { fileDialogImportPlaylist.ShowDialog(); string filePath = fileDialogImportPlaylist.FileName; string fileDataJson = File.ReadAllText(filePath); //needed to count tracks: dynamic fileData = JsonConvert.DeserializeObject(fileDataJson); NewPlaylistForm newPlaylistForm = new NewPlaylistForm(fileData.uris.Count); newPlaylistForm.ShowDialog(); if (newPlaylistForm.DialogResult == DialogResult.OK) { string playlistName = newPlaylistForm.Name_; string playlistDescription = newPlaylistForm.Description; Playlist playlistCreated = await CreateNewPlaylist(playlistName, playlistDescription); string targetId = playlistCreated.id; PopulatePlaylistTracks(targetId, fileDataJson); MessageBox.Show("Playlist imported!"); newPlaylistForm.Dispose(); } }
private async void lnkGenerateObscure_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { int firstPlaylistCount = Globals.DataStore.SelectedPlaylist.tracks.total; NewPlaylistForm newPlaylistForm = new NewPlaylistForm(firstPlaylistCount); newPlaylistForm.ShowDialog(); string playlistName = newPlaylistForm.Name_; string playlistDescription = newPlaylistForm.Description; //int numTracks = newPlaylistForm.NumTracks; PlaylistTracks playlistTracks = Globals.DataStore.SelectedPlaylistTracks; List <string> seedTrackIDs = GetPlaylistTrackIDs(); List <string> newTrackUris = new List <string>(); for (int i = 0; i < firstPlaylistCount; i += 5) { string recomUrl = $"https://api.spotify.com/v1/recommendations?limit=5&seed_tracks="; for (int ii = 0; ii < 5; ii += 1) { if (seedTrackIDs.Count > i + ii) { recomUrl += $"{seedTrackIDs[i + ii]},"; } } if (recomUrl.Contains(',')) { recomUrl = recomUrl.Remove(recomUrl.LastIndexOf(',')); } recomUrl += "&target_popularity=0"; string recommendationJson = await Globals.Requester.GetAsync(recomUrl); Recommendation recommendation = JsonConvert.DeserializeObject <Recommendation>(recommendationJson); foreach (Track t in recommendation.tracks) { newTrackUris.Add(t.uri); } } string uriPostContent = GetUriListJson(newTrackUris); Playlist newPlaylist = await CreateNewPlaylist(playlistName, playlistDescription); await PopulatePlaylistTracks(newPlaylist.id, uriPostContent); newPlaylistForm.Dispose(); }
/* * public async Task<Recommendation> GetRecommendations() * { * * } */ private async void lnkGenerateSimilar_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { int firstPlaylistCount = Globals.DataStore.SelectedPlaylist.tracks.total; NewPlaylistForm newPlaylistForm = new NewPlaylistForm(firstPlaylistCount); newPlaylistForm.ShowDialog(); string playlistName = newPlaylistForm.Name_; string playlistDescription = newPlaylistForm.Description; //int numTracks = newPlaylistForm.NumTracks; PlaylistTracks playlistTracks = Globals.DataStore.SelectedPlaylistTracks; List <string> seedTrackIDs = GetPlaylistTrackIDs(); List <string> newTrackUris = new List <string>(); for (int i = 0; i < firstPlaylistCount; i += 5) { //TODO: only seeding w/ first 5 tracks for now string recomUrl = $"https://api.spotify.com/v1/recommendations?limit=5&seed_tracks="; for (int ii = 0; ii < 5; ii += 1) { if (seedTrackIDs.Count > i + ii) { recomUrl += $"{seedTrackIDs[i + ii]},"; } } if (recomUrl.Contains(',')) { recomUrl = recomUrl.Remove(recomUrl.LastIndexOf(',')); } string recommendationJson = await Globals.Requester.GetAsync(recomUrl); Recommendation recommendation = JsonConvert.DeserializeObject <Recommendation>(recommendationJson); foreach (Track t in recommendation.tracks) { newTrackUris.Add(t.uri); } } string uriPostContent = GetUriListJson(newTrackUris); Playlist newPlaylist = await CreateNewPlaylist(playlistName, playlistDescription); await PopulatePlaylistTracks(newPlaylist.id, uriPostContent); /* * //this is working * //maybe lets put this in a method with parameters so it can be used for the other generation methods * //if that won't work or is too time-consuming it can be easily done in each event also */ newPlaylistForm.Dispose(); }