Example #1
0
        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();
            }
        }
Example #2
0
        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();
        }
Example #3
0
        /*
         * 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();
        }