Beispiel #1
0
 /* 换用别的传递内容或者返回新的List减少内存占用?listnode的引用会导致GC无法清理HtmlDocument?
  * 实测发现返回换成返回一个新List也没有减少内存占用。。
  */
 internal IEnumerable <SongModel> ParseAlbumSongs(HtmlNode listnode, AlbumModel album)
 {
     foreach (var node in listnode.ChildNodes)
     {
         if (node.NodeType != HtmlNodeType.Element)
         {
             continue;
         }
         uint      songID = uint.Parse(node.SelectSingleNode("./span").GetAttributeValue("rel", "0"));
         SongModel song   = SongModel.GetNew(songID);
         song.Name        = node.SelectSingleNode("./div/a").InnerText;
         song.TrackArtist = node.SelectSingleNode("./div/span")?.InnerText;
         song.PlayCount   = int.Parse(node.SelectSingleNode("./div[2]/span").InnerText);
         song.Album       = album;
         yield return(song);
     }
 }
Beispiel #2
0
 internal IEnumerable <SongModel> ParseArtistSongs(HtmlNode listnode)
 {
     foreach (var item in listnode.ChildNodes)
     {
         if (item.NodeType != HtmlNodeType.Element)
         {
             continue;
         }
         var       id   = uint.Parse(item.SelectSingleNode("./span").GetAttributeValue("rel", "0"));
         SongModel song = SongModel.GetNew(id);
         song.Name = item.SelectSingleNode(".//a").InnerText;
         int playcount = -1;
         if (int.TryParse(item.SelectSingleNode("./div/span").InnerText, out playcount))
         {
             song.PlayCount = playcount;
         }
         yield return(song);
     }
 }