示例#1
0
        private static AlbumResult SearchAlbum(string id)
        {
            var result = new AlbumResult
            {
                ErrorCode = 200,
                ErrorMsg = "OK",
                AlbumLink = "http://h.dongting.com/yule/app/music_album.html?id="+id,
                Songs = new List<SongResult>()
            };
            var url = "http://api.dongting.com/song/album/" + id;
            var html = CommonHelper.GetHtmlContent(url);
            if (string.IsNullOrEmpty(html))
            {
                result.ErrorCode = 300;
                result.ErrorMsg = "获取专辑信息失败";
                return result;
            }
            try
            {
                var json = JObject.Parse(html);
                if (string.IsNullOrEmpty(json["data"]?.ToString()) || json["data"].ToString() == "null")
                {
                    result.ErrorCode = 404;
                    result.ErrorMsg = "请检查专辑ID是否正确";
                    return result;
                }
                result.AlbumType = json["data"]["typeName"].ToString();
                result.AlbumInfo = json["data"]["description"].ToString();

                var datas = json["data"]["songList"];
                var year = json["data"]["publishDate"].ToString();
                var cmp = json["data"]["companyName"].ToString();
                var lug = json["data"]["lang"].ToString();
                var ar = json["data"]["singerName"].ToString();
                var pic = json["data"]["picUrl"].ToString();
                var alias = json["data"]["alias"].ToString();
                var songs = json["data"]["songs"].Select(jToken => jToken.ToString()).ToList();
                result.Songs = GetListByJson(datas);
                foreach (var r in result.Songs)
                {
                    r.TrackNum = (songs.IndexOf(r.SongId) + 1).ToString();
                    r.Year = year;
                    r.Company = cmp;
                    r.Language = lug;
                    r.AlbumArtist = ar;
                    r.PicUrl = pic;
                    r.AlbumSubName = alias;
                }
                return result;
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                result.ErrorCode = 500;
                result.ErrorMsg = "专辑解析失败";
                return result;
            }
        }
示例#2
0
 private static AlbumResult SearchAlbum(string id)
 {
     var result = new AlbumResult
     {
         ErrorCode = 200,
         ErrorMsg = "OK",
         AlbumLink = "http://www.xiami.com/album/" + id,
         Songs = new List<SongResult>()
     };
     var list = GetResultsByIds(id, 1);
     if (list == null || list.Count <= 0)
     {
         result.Songs = GetLostAlbum(id);
     }
     else
     {
         result.Songs = list;
     }
     var url = "http://www.xiami.com/app/xiating/album?spm=0.0.0.0.L6k2wP&id=" + id + "&uid=0";
     var html = CommonHelper.GetHtmlContent(url);
     if (string.IsNullOrEmpty(html))
     {
         return result;
     }
     try
     {
         var match = Regex.Match(html,
             @"(?<=h1 title="")([^""]+)(?:""[\s\S]+?p class="")([^""]*)(?:""[\s\S]+detail_songer"">)([^<]+)(?:</a>[\s\S]+?<em>)([^<]+)(?:</em>[\s\S]+?<em>)([^<]+)(?:</em>[\s\S]+?<em>)([^<]+)(?:</em>[\s\S]+?<em>)([^<]+)(?:</em>)");
         if (match.Length <= 0)
         {
             return result;
         }
         foreach (var s in result.Songs)
         {
             s.AlbumSubName = match.Groups[2].Value;
             s.AlbumArtist = match.Groups[3].Value;
             s.Language = match.Groups[4].Value;
             s.Company = match.Groups[5].Value;
             s.Year = match.Groups[6].Value.Replace("年", "-").Replace("月", "-").Replace("日", "");
         }
         result.AlbumType = match.Groups[7].Value;
     }
     catch (Exception ex)
     {
         CommonHelper.AddLog(ex);
     }
     return result;
 }