Exemplo n.º 1
0
        public static ArtistInfo ParseArtistPage(SetlistInfo parent)
        {
            /* Get main info from artist page.
             *
             *
             * Input: SetlistInfo object of one artist.
             *
             * Output: ArtistInfo object
             * (see info in ArtistInfo.cs)
             */
            List <string> songs = new List <string>();
            Dictionary <string, List <string> > tours = new Dictionary <string, List <string> >();
            List <string> albums     = new List <string>();
            string        albumsLink = "";

            HtmlWeb            webDoc = new HtmlWeb();
            HtmlDocument       doc    = webDoc.Load("https://www.setlist.fm/" + parent.artistLink);
            HtmlNodeCollection nodes  = doc.DocumentNode.SelectNodes("//a");

            foreach (var tag in nodes)
            {
                if (tag.Attributes.Contains("class") &&
                    tag.Attributes["class"].Value == "songName" &&
                    !songs.Contains(tag.InnerText))
                {
                    var name = clean(tag.InnerText.Trim());
                    songs.Add(name);
                }

                if (tag.Attributes.Contains("title") &&
                    tag.Attributes["title"].Value.StartsWith("Show song statistics of the tour", StringComparison.Ordinal))
                {
                    var name = clean(tag.InnerText.Trim());
                    tours.Add(name, ParseTourPage(tag.Attributes["href"].Value));
                }
                if (tag.Attributes.Contains("title") &&
                    tag.Attributes["title"].Value.EndsWith("albums", StringComparison.Ordinal))
                {
                    albumsLink = tag.Attributes["href"].Value.Replace("../", "");
                }
            }
            albums = ParseAlbumPage(albumsLink);

            ArtistInfo artist = new ArtistInfo(parent.bandName, songs, tours, albums);

            return(artist);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        public static void OneSetlistInfo(string path)
        {
            SetlistInfo check  = ParseSetlistPage(Globals.MainPageInfo[0].link, Globals.MainPageInfo[0].bandName);
            ArtistInfo  artist = ParseArtistPage(check);
            string      str    = $"Artist name: {artist.bandName}\n\n";

            str += "------------------------------";
            str += "All songs\n";
            foreach (var song in artist.songs)
            {
                str += song;
                str += "\n";
            }
            str += "------------------------------";
            str += "Tours\n";
            foreach (KeyValuePair <string, List <string> > keyValue in artist.tours)
            {
                str += keyValue.Key;
                str += "\n";
                foreach (var song in keyValue.Value)
                {
                    str += $"    {song}\n";
                }
                str += "\n";
            }
            str += "------------------------------";
            str += "Albums\n";
            foreach (var album in artist.albums)
            {
                str += album;
                str += "\n";
            }
            str += "------------------------------";
            str += "Setlist songs\n";
            foreach (var song in check.songs)
            {
                str += song;
                str += "\n";
            }
            File.WriteAllText(path, str);
        }