Example #1
0
        public static MangaCategoryListVM GetMangaCategoryList(MangaCategorySourceType sourceType, string category, int page)
        {
            MangaCategoryListVM ret = new MangaCategoryListVM();

            switch (sourceType)
            {
            case MangaCategorySourceType.憨憨漫画:
                ret = GetManageCategoryListHanhan(category.Split(','), page);
                break;
            }

            return(ret);
        }
Example #2
0
        private static MangaCategoryListVM GetManageCategoryListHanhan(string[] category, int page)
        {
            MangaCategoryListVM ret = new MangaCategoryListVM();

            ret.Mangas      = new List <MangaCategoryListItem>();
            ret.CurrentPage = page;

            var urlPrefix = "http://www.hanhande.net/";
            var url       = "list";
            var searchUrl = "";

            if (category.Length == 1 && string.IsNullOrEmpty(category[0]))
            {
                url += "_" + page + "/";
            }
            else
            {
                url += "/" + string.Join("-", category) + "/" + page + "/";
            }

            searchUrl = urlPrefix + url;
            var htmlRet = HtmlManager.GetHtmlWebClient("http://www.hanhan.net", searchUrl);

            if (htmlRet.Success)
            {
                try
                {
                    HtmlDocument document = new HtmlDocument();
                    document.LoadHtml(htmlRet.Content);

                    var listPath = "//li[@class='item-lg']";
                    var pagePath = "//li[@class='last']";

                    var listNodes = document.DocumentNode.SelectNodes(listPath);
                    var pageNode  = document.DocumentNode.SelectSingleNode(pagePath);

                    if (pageNode != null && pageNode.ChildNodes.FindFirst("a") != null)
                    {
                        int total = -1;

                        int.TryParse(pageNode.ChildNodes.FindFirst("a").Attributes["data-page"].Value.Trim(), out total);

                        ret.TotalPage = total + 1;
                    }

                    if (listNodes != null)
                    {
                        foreach (var node in listNodes)
                        {
                            var aTag = node.ChildNodes.FindFirst("a");

                            if (aTag != null)
                            {
                                MangaCategoryListItem temp = new MangaCategoryListItem();

                                temp.MangaUrl  = aTag.Attributes["href"].Value.Trim();
                                temp.MangaName = aTag.Attributes["title"].Value.Trim();

                                foreach (var subNode in aTag.ChildNodes)
                                {
                                    if (subNode.Name == "img")
                                    {
                                        temp.PicUrl = subNode.Attributes["src"].Value.Trim();
                                    }

                                    if (subNode.Name == "span" && subNode.Attributes["class"].Value.Trim() == "fd")
                                    {
                                        temp.IsFinished = true;
                                    }

                                    if (subNode.Name == "span" && subNode.Attributes["class"].Value.Trim() == "tt")
                                    {
                                        temp.UpdateInfo = subNode.InnerHtml.Trim();
                                    }
                                }

                                foreach (var subNode in node.ChildNodes)
                                {
                                    DateTime updateDate = DateTime.Now;

                                    if (subNode.Name == "span" && subNode.Attributes["class"].Value.Trim() == "updateon")
                                    {
                                        DateTime.TryParse(subNode.InnerHtml.Substring(subNode.InnerHtml.IndexOf(":") + 1, subNode.InnerHtml.IndexOf(" ")), out updateDate);
                                        temp.UpdateDate = updateDate;
                                    }
                                }

                                ret.Mangas.Add(temp);
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    ret.MsgCode = VMCode.Exception;
                    ret.Msg     = e.ToString();
                }
            }
            else
            {
                ret.MsgCode = VMCode.Error;
                ret.Msg     = "网页获取失败";
            }

            ret.PageSize = ret.Mangas.Count;
            return(ret);
        }