public SongMeaningsSong(SongMeaningsArtist artist, String songName, String songId, String lyrics = null)
 {
     this.artist = artist;
     this.songName = songName;
     this.songId = songId;
     this._lyrics = lyrics;
 }
Exemple #2
0
 public SongMeaningsSong(SongMeaningsArtist artist, String songName, String songId, String lyrics = null)
 {
     this.artist   = artist;
     this.songName = songName;
     this.songId   = songId;
     this._lyrics  = lyrics;
 }
        private IEnumerable <SongMeaningsArtist> GetArtistsFromText(String artistListText, bool onFirstPageOfSearch)
        {
            String                    pattern    = @"<a href=""[^""]+"" title=""[^""]+"">";
            MatchCollection           matches    = Regex.Matches(artistListText, pattern);
            List <SongMeaningsArtist> artistList = new List <SongMeaningsArtist>();

            foreach (Match m in matches)
            {
                String artistLink = m.Value;
                String artistName = GetTextBetweenTags(artistLink, ARTIST_NAME_START_STRING, ARTIST_END_START_STRING);
                String artistId   = GetTextBetweenTags(artistLink, ARTIST_ID_START_STRING, ARTIST_ID_END_STRING);
                var    artist     = new SongMeaningsArtist(artistName, artistId);
                artistList.Add(artist);
            }

            if (onFirstPageOfSearch && _tryResumeSearch)
            {
                SongMeaningsArtist lastArtistProcessed = GetSerializedLastArtistProcessed();
                if (artistList.Contains(lastArtistProcessed))
                {
                    artistList.RemoveRange(0, artistList.IndexOf(lastArtistProcessed)); // Start over with the same artist we were working on previously, in case we didn't get all their songs
                }
            }

            foreach (SongMeaningsArtist artist in artistList)
            {
                yield return(artist);
            }
        }
 public override bool Equals(object obj)
 {
     if (obj is SongMeaningsArtist)
     {
         SongMeaningsArtist otherArtist = (SongMeaningsArtist)obj;
         return(this.artistId.Equals(otherArtist.artistId));
     }
     else
     {
         return(false);
     }
 }
        public override IEnumerable <SongMeaningsNode> GetChildren()
        {
            bool onFirstPageOfSearch = true;

            foreach (String pageOfArtists in GetArtistListTextForAllPagesInThisDirectory())
            {
                foreach (SongMeaningsArtist artist in GetArtistsFromText(pageOfArtists, onFirstPageOfSearch)) // Only tries to resume from previous progress if on first page of search
                {
                    ArtistNode artistNode = new ArtistNode(artist);
                    lastArtistProcessed = artist;
                    yield return(artistNode);
                }
                onFirstPageOfSearch = false;
            }
        }
 public ArtistNode(SongMeaningsArtist artist) : base(@"http://songmeanings.com/artist/view/songs/" + artist.artistId + "/", tryResumeSearch: false)
 {
     _artist = artist;
 }
 public override IEnumerable<SongMeaningsNode> GetChildren()
 {
     bool onFirstPageOfSearch = true;
     foreach (String pageOfArtists in GetArtistListTextForAllPagesInThisDirectory())
     {
         foreach (SongMeaningsArtist artist in GetArtistsFromText(pageOfArtists, onFirstPageOfSearch)) // Only tries to resume from previous progress if on first page of search
         {
             ArtistNode artistNode = new ArtistNode(artist);
             lastArtistProcessed = artist;
             yield return artistNode;
         }
         onFirstPageOfSearch = false;
     }
 }
 public ArtistNode(SongMeaningsArtist artist)
     : base(@"http://songmeanings.com/artist/view/songs/" + artist.artistId + "/", tryResumeSearch:false)
 {
     _artist = artist;
 }
        private IEnumerable<SongMeaningsArtist> GetArtistsFromText(String artistListText, bool onFirstPageOfSearch)
        {
            String pattern = @"<a href=""[^""]+"" title=""[^""]+"">";
            MatchCollection matches = Regex.Matches(artistListText, pattern);
            List<SongMeaningsArtist> artistList = new List<SongMeaningsArtist>();
            foreach (Match m in matches)
            {
                String artistLink = m.Value;
                String artistName = GetTextBetweenTags(artistLink, ARTIST_NAME_START_STRING, ARTIST_END_START_STRING);
                String artistId = GetTextBetweenTags(artistLink, ARTIST_ID_START_STRING, ARTIST_ID_END_STRING);
                var artist = new SongMeaningsArtist(artistName, artistId);
                artistList.Add(artist);
            }

            if (onFirstPageOfSearch && _tryResumeSearch)
            {
                SongMeaningsArtist lastArtistProcessed = GetSerializedLastArtistProcessed();
                if(artistList.Contains(lastArtistProcessed))
                {
                    artistList.RemoveRange(0, artistList.IndexOf(lastArtistProcessed)); // Start over with the same artist we were working on previously, in case we didn't get all their songs
                }
            }

            foreach (SongMeaningsArtist artist in artistList)
            {
                yield return artist;
            }
        }