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; } }