/// <summary> /// 无法获取用户关注状态 /// </summary> /// <param name="mode"></param> /// <param name="pageId"></param> /// <returns></returns> public IllustrationsPage GetRankList(RankMode mode, string pageId) { if (mode.IsR18()) { AssertLoggedIn(); } var url = GetRankListUrl(mode, pageId); var s = _client.GetString(_client.BuildRequest(url)); var obj = GetJObject(s); if (obj == null) { throw new Exception("解析排行榜信息时出错"); } var getPageId = new Func <string, string>(property => { var v = obj.Val <string>(property); if (v == "False") { return(null); } return(v); }); var page = new IllustrationsPage() { NextPageId = getPageId("next"), PageId = pageId, PrevPageId = getPageId("prev"), }; var contens = obj["contents"]; foreach (var token in contens) { var illust = new Illustration() { Bookmarked = token.Val <bool>("is_bookmarked"), Count = token.Val <int>("illust_page_count"), Height = token.Val <string>("height"), Id = token.Val <string>("illust_id"), Tags = token["tags"].AsList <string>(), Thumbnail = token.Val <string>("url"), Title = token.Val <string>("title"), User = new User() { Avatar = token.Val <string>("profile_img"), Id = token.Val <string>("user_id"), Name = token.Val <string>("user_name"), }, ViewCount = token.Val <string>("view_count"), Width = token.Val <string>("width"), }; page.Illustrations.Add(illust); } return(page); }
/// <summary> /// 所关注用户的最新作品 /// </summary> /// <param name="pageId"></param> /// <returns></returns> public IllustrationsPage GetBookmarkUsersNewIllustrations(string pageId) { AssertLoggedIn(); var url = GetBookmarkUsersNewIllustrationsUrl(pageId); var s = _client.GetString(_client.BuildRequest(url)); var pageIdContainer = s.XPathSingle("//div[@class='pager-container']"); var prevUri = pageIdContainer.SelectSingleNodeAttr("./span[@class='prev']/a", "href"); var currentPageId = pageIdContainer.SelectSingleNodeHtml(".//li[@class='current']"); var nextUri = pageIdContainer.SelectSingleNodeAttr("./span[@class='next']/a", "href"); var regex = new Regex("p=(\\d+)"); var getPageId = new Func <string, string>(uri => { if (uri == null) { return(null); } if (uri == "?") { return("1"); } var match = regex.Match(uri); return(match.Success ? match.Groups[1].Value : null); }); var prevPageId = getPageId(prevUri); var nextPageId = getPageId(nextUri); var items = s.XPathSingleAttr("//div[@id='js-mount-point-latest-following']", "data-items"); if (items == null) { throw new Exception("无法获取最新插画信息"); } items = HttpUtility.HtmlDecode(items); var arr = GetJArray(items); var page = new IllustrationsPage() { NextPageId = nextPageId, PageId = currentPageId, PrevPageId = prevPageId, }; foreach (var token in arr) { var illust = new Illustration() { Bookmarked = token.Val <bool>("isBookmarked"), Count = token.Val <int>("pageCount"), Height = token.Val <string>("height"), Id = token.Val <string>("illustId"), Tags = token["tags"].AsList <string>(), Thumbnail = token.Val <string>("url"), Title = token.Val <string>("illustTitle"), User = new User() { Id = token.Val <string>("userId"), Name = token.Val <string>("userName"), }, Width = token.Val <string>("width"), }; page.Illustrations.Add(illust); } return(page); }