public async Task <ActionResult <SearchItem> > GeneratePlaylist(string keyword = "") { //must be a user access token var accessToken = ""; //await GetAccessToken(); SpotifyWebAPI api = new SpotifyWebAPI { AccessToken = accessToken, TokenType = "Bearer" }; var randomOffset = random.Next(0, 1000); var randomSearch = keyword == "" ? GetRandomSearch() : keyword; TuneableTrack tar = new TuneableTrack { Popularity = random.NextDouble() >= 0.5 ? 80 : 100 }; var genre = GetGenreSeed(keyword); Recommendations rec = api.GetRecommendations(genreSeed: genre, target: tar, market: random.NextDouble() >= 0.5 ? "GB" : "US"); var newPlaylist = api.CreatePlaylist("rsacr1m9ge9ur5tdceead2ziy", "Wholeschool Playlist " + _nameGenerator.Generate(), true, false, $"Auto generated playlist for {keyword} on {DateTime.Now.ToShortDateString()}"); ErrorResponse response = api.ReplacePlaylistTracks(newPlaylist.Id, rec.Tracks.Select(s => s.Uri).ToList()); if (!response.HasError()) { Console.WriteLine("success"); } return(Ok(new { newPlaylist.Name, newPlaylist.Uri, newPlaylist.Href, newPlaylist.Id })); }
public string GetRecommendations(List <string> artistSeed = null, List <string> genreSeed = null, TuneableTrack target = null, TuneableTrack min = null, TuneableTrack max = null, int limit = 20, string market = "") { limit = Math.Min(100, limit); StringBuilder builder = new StringBuilder($"{spotifyAPIBase}/recommendations"); builder.Append("?limit=" + limit); if (artistSeed?.Count > 0) { builder.Append("&seed_artists=" + string.Join(",", artistSeed)); } if (genreSeed?.Count > 0) { builder.Append("&seed_genres=" + string.Join(",", genreSeed)); } if (target != null) { builder.Append(target.BuildUrl("target")); } if (min != null) { builder.Append(min.BuildUrl("min")); } if (max != null) { builder.Append(max.BuildUrl("max")); } if (!string.IsNullOrEmpty(market)) { builder.Append("&market=" + market); } return(builder.ToString()); }
public JObject GetRecommendations(List <string> artistSeed = null, List <string> genreSeed = null, TuneableTrack target = null, TuneableTrack min = null, TuneableTrack max = null, int limit = 2, string market = "") { var token = GetToken(); if (token == null || string.IsNullOrEmpty(token)) { throw new InvalidOperationException("Invalid or missing access token!"); } return(_client.GetData(_urlBuilder.GetRecommendations(artistSeed, genreSeed, target, min, max, limit, market), token)); }
public SeveralTracks GetRecommendations( List <string> genres = null, List <string> artists = null, List <string> tracks = null, TuneableTrack targetTrack = null) { var recommendations = _webApi.GetRecommendations( artistSeed: artists, genreSeed: genres, trackSeed: tracks, target: targetTrack, limit: 25, market: "SE"); var trackIdList = recommendations.Tracks.Select(t => t.Id).ToList(); return(_webApi.GetSeveralTracks(trackIdList)); }
// Gets recommendations from spotify. private Recommendations GenerateRecommendations() { List <string> genreSeed = new List <string> { "rock", "pop" }; TuneableTrack minValues = new TuneableTrack { Popularity = 70 }; TuneableTrack maxValues = new TuneableTrack { Popularity = 100 }; return(SpotifyHelper.Instance.Api.GetRecommendations(genreSeed: genreSeed, limit: 1, market: "SE", min: minValues, max: maxValues)); }
/// <summary> /// Set Parameter /// </summary> /// <param name="parameters">Parameters</param> /// <param name="prefix">Prefix</param> /// <param name="tuneableTrack">Tuneable Track Object</param> public static void SetParameter( this TuneableTrack tuneableTrack, Dictionary <string, string> parameters, string prefix) { if (tuneableTrack != null) { foreach (PropertyInfo info in typeof(TuneableTrack).GetProperties()) { if (info.CanRead) { object value = info.GetValue(tuneableTrack, null); if (value != null) { parameters.Add($"{prefix}_{info.GetDescription()}", value.ToString()); } } } } }
public ActionResult Tracks(FormModel model) { var spotifyApi = new SpotifyIntegration.SpotifyIntegration(); var tracksModel = new TracksModel(); if (model.Name != null && model.Name.ToLower() == "tom araya") { tracksModel.TrackList = spotifyApi.GetSingleTrack("4Yx9Tw9dTgQ8eGCq3PRDyn"); } else { var targetTrack = new TuneableTrack() { Valence = model.Valence / 100, Danceability = model.FeelLikeDancing / 100, }; if (model.SelectedGenres.Length + model.SelectedArtists.Length + model.SelectedTracks.Length > 5) { model.Genres = FormModelListItemHelper.GetGenres(); model.Tracks = FormModelListItemHelper.GetTracks(); model.Artists = FormModelListItemHelper.GetArtists(); model.ErrorMessage = "Whoops, according to Spotify you can only select a total of 5 tracks, genres and artists for recommendations. Deselect a few and try again and sorry for the inconvenience."; return(View("~/Views/Genre/Genre.cshtml", model)); //RedirectToRoute("Genre", model); } tracksModel.TrackList = spotifyApi.GetRecommendations( artists: model.SelectedArtists.ToList(), tracks: model.SelectedTracks.ToList(), genres: model.SelectedGenres.ToList(), targetTrack: targetTrack); } return(View(tracksModel)); }