public IList <TrackData> LoadMoreResults() { List <TrackData> returnList = new List <TrackData>(); for (int i = 1; i <= _perpage; i++) { int trackIdInt = _perpage * _loadedPages + i; string trackId = trackIdInt.ToString(); if (trackIdInt > _total) { break; } TrackData data = new TrackData("PlaceHolderTrackDataSource", "id" + trackId, "artist " + trackId, "title " + trackId, "mix " + trackId, "remixer " + trackId, "release " + trackId, "producer " + trackId, "label " + trackId, "cat no " + trackId, "genre " + trackId, KeyEnum.A, DateTime.Now, new Uri(@"http://www.google.com")); returnList.Add(data); _tracks.Add(data); } if (returnList.Count > 0) { _loadedPages++; } return(returnList); }
public TrackData GetTrack(string trackId) { TrackData data = new TrackData("PlaceHolderTrackDataSource", "id" + trackId, "artist " + trackId, "title " + trackId, "mix " + trackId, "remixer " + trackId, "release " + trackId, "producer " + trackId, "label " + trackId, "cat no " + trackId, "genre " + trackId, KeyEnum.A, DateTime.Now, new Uri(@"http://www.google.com")); return(data); }
private static TrackData ParseResponse(Dictionary <string, dynamic> trackData, Dictionary <string, dynamic> releaseData, string host) { string trackId = trackData["id"].ToString(); string title = trackData["name"]; string mix = trackData["mixName"]; string label = trackData["label"]["name"]; DateTime releaseDate = ParseReleaseDate(trackData["releaseDate"]); string release = trackData["release"]["name"]; Uri url = GetUri(trackData["id"], trackData["slug"]); string genre = GetGenre(trackData["genres"]); string artist = GetArtist(trackData["artists"], "artist"); string remixer = GetArtist(trackData["artists"], "remixer"); KeyEnum? key = GetKey(trackData["key"]); string catalogNo = releaseData["catalogNumber"]; //catalog number is the only value I need the releaseData for string producer = null; //not sure how to get the producer out of beatport TrackData track = new TrackData(host, trackId, artist, title, mix, remixer, release, producer, label, catalogNo, genre, key, releaseDate, url); return(track); }
private static IEnumerable <TrackData> ParseReleaseData(Dictionary <string, dynamic> releaseData, string host) { //url string URL = (string)releaseData["uri"]; //release string Release = (string)releaseData["title"]; //Label and catalog number System.Collections.ArrayList labels = releaseData["labels"]; List <string> labelNames = new List <string>(); List <string> catNumbers = new List <string>(); foreach (Dictionary <string, dynamic> labelData in labels) { labelNames.Add(labelData["name"]); catNumbers.Add(labelData["catno"]); } string Label = string.Join(", ", labelNames); string CatalogNumber = string.Join(", ", catNumbers); //Genre(s) string Genre = null; if (releaseData.ContainsKey("styles")) { System.Collections.ArrayList genres = (System.Collections.ArrayList)releaseData["styles"]; List <string> genreNames = new List <string>(); foreach (String genre in genres) { genreNames.Add(genre); } string genreStr = string.Join(", ", genreNames); if (!String.IsNullOrEmpty(genreStr)) { Genre = genreStr; } } //Release date DateTime?ReleaseDate = null; if (releaseData.ContainsKey("released")) { string releasedString = (string)releaseData["released"]; var yearMatch = System.Text.RegularExpressions.Regex.Match(releasedString, @"\d{4}$"); var dateMatch = System.Text.RegularExpressions.Regex.Match(releasedString, @"(\d{4})-(\d{2})-(\d{2})$"); if (yearMatch.Success) { ReleaseDate = new DateTime(System.Convert.ToInt32(releasedString), 1, 1); } else if (dateMatch.Success) { int year = System.Convert.ToInt32(dateMatch.Groups[1].Value); int month = System.Convert.ToInt32(dateMatch.Groups[2].Value); int day = System.Convert.ToInt32(dateMatch.Groups[3].Value); if (month == 0 || day == 0) { new DateTime(year, 1, 1); } else { ReleaseDate = new DateTime(year, month, day); } } else { throw new InvalidOperationException("Unexpected release date format:" + releasedString); } } //artists List <string> releaseArtists = new List <string>(); List <string> releaseRemixers = new List <string>(); List <string> releaseProducers = new List <string>(); foreach (Dictionary <string, object> artist in releaseData["artists"]) { var name = (string)artist["name"]; var anv = (string)artist["anv"]; var role = (string)artist["role"]; if (name == "Various") { continue; } if (!string.IsNullOrEmpty(anv)) { name = anv; } if (!string.IsNullOrEmpty(role)) { throw new InvalidOperationException("found release artist with a roll: " + role); } else { releaseArtists.Add(name); } } foreach (Dictionary <string, object> trackData in releaseData["tracklist"]) { int trackIdInt = (int)releaseData["id"]; string TrackId = trackIdInt.ToString(); string Title = null; string Mix = null; string titleString = (string)trackData["title"]; System.Text.RegularExpressions.Regex trackMixRegex = new System.Text.RegularExpressions.Regex(@"^(.*)\((.*)\)"); var trackMixMatch = trackMixRegex.Match(titleString); if (trackMixMatch.Success) { Title = trackMixMatch.Groups[1].Value; Mix = trackMixMatch.Groups[2].Value; } else { Title = titleString; } //track artists List <string> trackArtists = new List <string>(); List <string> trackRemixers = new List <string>(); List <string> trackProducers = new List <string>(); if (trackData.ContainsKey("artists")) { System.Collections.ArrayList trackArtistsList = (System.Collections.ArrayList)trackData["artists"]; foreach (Dictionary <string, object> artist in trackArtistsList) { var name = (string)artist["name"]; var anv = (string)artist["anv"]; var role = (string)artist["role"]; if (!string.IsNullOrEmpty(anv)) { name = anv; } if (string.IsNullOrEmpty(role)) { trackArtists.Add(name); } else if (role == "Remix") { trackRemixers.Add(name); } else { throw new InvalidOperationException("found track artist with an unknown roll: " + role); } } } if (trackData.ContainsKey("extraartists")) { System.Collections.ArrayList trackextraArtists = (System.Collections.ArrayList)trackData["extraartists"]; foreach (Dictionary <string, object> artist in trackextraArtists) { var name = (string)artist["name"]; var anv = (string)artist["anv"]; var role = (string)artist["role"]; if (!string.IsNullOrEmpty(anv)) { name = anv; } if (string.IsNullOrEmpty(role)) { trackArtists.Add(name); } else if (role.Contains("Remix")) { trackRemixers.Add(name); } } } string Artist = null; var artistList = releaseArtists.Union(trackArtists); string artistStr = string.Join(", ", artistList); if (!String.IsNullOrEmpty(artistStr)) { Artist = artistStr; } string Remixer = null; var remixerList = releaseRemixers.Union(trackRemixers); string remixerStr = string.Join(", ", remixerList); if (!String.IsNullOrEmpty(remixerStr)) { Remixer = remixerStr; } string Producer = null; var producerList = releaseProducers.Union(trackProducers); string producerStr = string.Join(", ", producerList); if (!String.IsNullOrEmpty(producerStr)) { Producer = producerStr; } TrackData track = new TrackData(host, TrackId, Artist, Title, Mix, Remixer, Release, Producer, Label, CatalogNumber, Genre, null, ReleaseDate, new Uri(URL)); yield return(track); } }