protected void OnTopSetlistsMenuChanged(object sender, EventArgs e) { clear(); ArtistInfoObjectsOn(); var id = TopSetlistsMenu.Active; SetlistInfo check = ParseSetlistPage(Globals.TopSetlists[id].link, Globals.TopSetlists[id].bandName); Globals.CurrentArtist = ParseArtistPage(check.artistLink, check.bandName); Globals.CurrentArtistToursLinks = Globals.CurrentArtist.tours.Keys.ToList(); label1.Text = Globals.CurrentArtist.bandName; foreach (var song in Globals.CurrentArtist.songs) { AllArtistSongsMenu.AppendText(song); } foreach (var tour in Globals.CurrentArtist.tours.Values) { ArtistToursMenu.AppendText(tour); } foreach (var album in Globals.CurrentArtist.albums) { ArtistAlbumsMenu.AppendText(album); } foreach (var song in check.songs) { SongsInSetlistMenu.AppendText(song); } }
public static SetlistInfo ParseSetlistPage(MainInfo parent) { // Get all name of songs in the page List <string> songs = new List <string>(); string artistLink = ""; HtmlWeb webDoc = new HtmlWeb(); HtmlDocument doc = webDoc.Load("https://www.setlist.fm/" + parent.link); HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//a"); foreach (var tag in nodes) { if (tag.Attributes.Contains("class") && tag.Attributes["class"].Value == "songLabel" && !songs.Contains(tag.InnerText)) { var name = clean(tag.InnerText.Trim()); songs.Add(name); } if (tag.Attributes.Contains("title") && tag.Attributes["title"].Value == "View song statistics of all setlists") { artistLink = tag.Attributes["href"].Value.Replace("../", ""); } } if (songs.Count == 0) { songs.Add("Nothing"); } SetlistInfo obj = new SetlistInfo(parent.GetFields(), artistLink, songs); return(obj); }
public static SetlistInfo ParseSetlistPage(string link, string bandName) { /* Get main info from setlist page * of one artist. * * Input: link on setlist and name of * setlist artist. * * Output: SetlistInfo object * (see info in SetlistInfo.cs) */ List <string> songs = new List <string>(); string artistLink = ""; HtmlWeb webDoc = new HtmlWeb(); HtmlDocument doc = webDoc.Load("https://www.setlist.fm/" + link); HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//a"); foreach (var tag in nodes) { if ((tag.Attributes.Contains("class") && tag.Attributes["class"].Value == "summary url") || (tag.Attributes.Contains("title") && tag.Attributes["title"].Value.StartsWith("Statistics for", StringComparison.Ordinal)) && !songs.Contains(tag.InnerText)) { var name = clean(tag.InnerText.Trim()); songs.Add(name); } if (tag.Attributes.Contains("title") && tag.Attributes["title"].Value == "View song statistics of all setlists") { artistLink = tag.Attributes["href"].Value.Replace("../", ""); } } if (songs.Count == 0) { songs.Add("Nothing"); } SetlistInfo obj = new SetlistInfo(bandName, artistLink, songs); return(obj); }
protected void OnArtistTopSetlistsChanged(object sender, EventArgs e) { ArtistInfoObjectsOn(); var id = ArtistTopSetlists.Active; for (int i = 0; i < 100; i++) { SongsInSetlistMenu.RemoveText(0); } try { SetlistInfo check = ParseSetlistPage(Globals.SearchingPageInfo.Setlists.Keys.ElementAt(id), Globals.SearchingPageInfo.bandName); foreach (var song in check.songs) { SongsInSetlistMenu.AppendText(song); } } catch (Exception ex) { label1.Text = ex.ToString(); } }