Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }