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