Beispiel #1
0
        public static List <FileItemModel> Get115Files(int start = 0, int end = 0, int pageSize = 1150)
        {
            List <FileItemModel> ret = new List <FileItemModel>();

            var cc = Get115Cookie();

            for (int i = start; i <= end; i++)
            {
                var url = string.Format(@"https://webapi.115.com/files?aid=1&cid=1834397846621504875&o=user_ptime&asc=0&offset={0}&show_dir=1&limit={1}&code=&scid=&snap=0&natsort=1&record_open_time=1&source=&format=json", i * pageSize, pageSize);

                var htmlRet = HtmlManager.GetHtmlWebClient("https://115.com", url, cc);
                if (htmlRet.Success)
                {
                    if (!string.IsNullOrEmpty(htmlRet.Content))
                    {
                        var data = JsonConvert.DeserializeObject <FileListModel>(htmlRet.Content);

                        if (data != null && data.data != null)
                        {
                            foreach (var d in data.data)
                            {
                                if (!ret.Exists(x => x.sha == d.sha))
                                {
                                    ret.Add(d);
                                }
                            }
                        }
                    }
                }
            }

            return(ret);
        }
Beispiel #2
0
        public static int Get115PagesInFolder(OneOneFiveSearchType type, int pageSize = 1, string folder = "1834397846621504875")
        {
            var url = $"https://webapi.115.com/files?aid=1&cid={folder}&o=user_ptime&asc=0&offset=0&show_dir=1&limit={pageSize}&code=&scid=&snap=0&natsort=1&record_open_time=1&source=&format=json&type={((int)type).ToString()}";
            var cc  = Get115Cookie();

            var htmlRet = HtmlManager.GetHtmlWebClient("https://webapi.115.com", url, cc);

            if (htmlRet.Success)
            {
                if (!string.IsNullOrEmpty(htmlRet.Content))
                {
                    var data = JsonConvert.DeserializeObject <FileListModel>(htmlRet.Content);

                    if (data != null && data.count > 0)
                    {
                        if (data.data == null)
                        {
                            return(data.count % pageSize == 0 ? data.count / pageSize : data.count / pageSize + 1);
                        }

                        return(data.count % data.page_size == 0 ? data.count / data.page_size : data.count / data.page_size + 1);
                    }
                }
            }

            return(0);
        }
Beispiel #3
0
        private static Dictionary <string, string> GetJavCategory()
        {
            Dictionary <string, string> genreDic = new Dictionary <string, string>();

            int times    = 1;
            int maxTimes = 3;

            //最大重试3次
            while (times <= maxTimes && (cc == null || cc.Count < 3))
            {
                GetJavCookie();
                times++;

                if (cc != null && cc.Count >= 3)
                {
                    break;
                }
            }

            if (times < 4 && cc != null)
            {
                //获取分类, 不会过期也不需要多线程
                var htmlRes = HtmlManager.GetHtmlWebClient("http://www.javlibrary.com/cn/", "http://www.javlibrary.com/cn/genres.php", cc, false);

                if (htmlRes.Success)
                {
                    HtmlAgilityPack.HtmlDocument htmlDocument = new HtmlAgilityPack.HtmlDocument();
                    htmlDocument.LoadHtml(htmlRes.Content);

                    var genrePath = "//div[@class='genreitem']";

                    var genreNodes = htmlDocument.DocumentNode.SelectNodes(genrePath);

                    foreach (var node in genreNodes)
                    {
                        var aTagHref  = "http://www.javlibrary.com/cn/" + node.ChildNodes[0].Attributes["href"].Value.Trim();
                        var aTagTitle = node.ChildNodes[0].InnerText.Trim();

                        if (!JavDataBaseManager.HasCategoryByName(aTagTitle))
                        {
                            JavDataBaseManager.InsertCategory(new Category
                            {
                                Name = aTagTitle,
                                Url  = aTagHref
                            });
                        }

                        if (!genreDic.ContainsKey(aTagHref))
                        {
                            genreDic.Add(aTagHref, aTagTitle);

                            Console.WriteLine("加入分类 " + aTagHref);
                        }
                    }
                }
            }

            return(genreDic);
        }
Beispiel #4
0
        private static MangaPicturesVM GetMangePicHanhan(MangaCategorySourceType sourceType, string path)
        {
            MangaPicturesVM ret = new MangaPicturesVM();

            ret.PicList = new List <string>();

            var htmlRet = HtmlManager.GetHtmlWebClient("http://www.hanhan.net", path);

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

                    var urlPath = "//link[@rel='miphtml']";

                    var urlNode = htmlDocument.DocumentNode.SelectSingleNode(urlPath);

                    var decrypt = htmlRet.Content.Substring(htmlRet.Content.IndexOf("chapterImages = ") + "chapterImages = ".Length);
                    decrypt = decrypt.Substring(0, decrypt.IndexOf("]") + 1);

                    var urlHeader = htmlRet.Content.Substring(htmlRet.Content.IndexOf("chapterPath = \"") + "chapterPath = \"".Length);
                    urlHeader = urlHeader.Substring(0, urlHeader.IndexOf("\""));

                    var picList = JsonConvert.DeserializeObject <List <string> >(decrypt);

                    foreach (var pic in picList)
                    {
                        if (!pic.StartsWith("http"))
                        {
                            ret.PicList.Add("http://img001.shaque.vip/" + urlHeader + pic);
                        }
                        else
                        {
                            ret.PicList.Add(pic);
                        }
                    }
                }
                catch (Exception e)
                {
                    ret.MsgCode = VMCode.Exception;
                    ret.Msg     = e.ToString();
                }
            }
            else
            {
                ret.MsgCode = VMCode.Error;
                ret.Msg     = "获取网页失败";
            }

            return(ret);
        }
Beispiel #5
0
        public static List <FileItemModel> Get115SearchFileResult(CookieContainer cc, string content, string folder = "1834397846621504875", string host = "115.com", string reffer = "https://115.com/?cid=0&offset=0&mode=wangpan", string ua = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36 115Browser/12.0.0")
        {
            FileListModel temp = new FileListModel();

            var url     = string.Format(string.Format("https://webapi.115.com/files/search?search_value={0}&format=json&cid={1}", content, folder));
            var htmlRet = HtmlManager.GetHtmlWebClient("https://webapi.115.com", url, cc);

            if (htmlRet.Success)
            {
                if (!string.IsNullOrEmpty(htmlRet.Content))
                {
                    temp = JsonConvert.DeserializeObject <FileListModel>(htmlRet.Content);
                }
            }

            return((temp == null || temp.data == null) ? null : temp.data);
        }
Beispiel #6
0
        public static string GetM3U8(string pc)
        {
            var cc   = Get115Cookie();
            var url  = "https://v.anxia.com/site/api/video/m3u8/" + pc + ".m3u8";
            var m3u8 = "";

            var htmlRet = HtmlManager.GetHtmlWebClient("https://webapi.115.com", url, cc);

            if (htmlRet.Success)
            {
                if (!string.IsNullOrEmpty(htmlRet.Content))
                {
                    m3u8 = htmlRet.Content.Substring(htmlRet.Content.IndexOf("http"));
                }
            }

            return(m3u8);
        }
Beispiel #7
0
        public static FileListModel GetMixedOneOneFileInFolder(string folder, int page = 0, int pageSize = 1150)
        {
            FileListModel ret = new FileListModel();
            var           cc  = Get115Cookie();
            var           url = $"https://aps.115.com/natsort/files.php?aid=1&cid={folder}&o=file_name&asc=1&offset={page}&show_dir=1&limit={pageSize}&code=&scid=&snap=0&natsort=1&record_open_time=1&source=&format=json&fc_mix=0";

            var htmlRet = HtmlManager.GetHtmlWebClient("https://115.com", url, cc);

            if (htmlRet.Success)
            {
                if (!string.IsNullOrEmpty(htmlRet.Content))
                {
                    ret = JsonConvert.DeserializeObject <FileListModel>(htmlRet.Content);
                }
            }

            return(ret);
        }
Beispiel #8
0
        public static bool Get115SearchResult(CookieContainer cc, string content, string folder = "1834397846621504875", string host = "115.com", string reffer = "https://115.com/?cid=0&offset=0&mode=wangpan", string ua = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36 115Browser/12.0.0")
        {
            bool ret = false;

            var url     = string.Format(string.Format("https://webapi.115.com/files/search?search_value={0}&format=json&cid={1}", content, folder));
            var htmlRet = HtmlManager.GetHtmlWebClient("https://webapi.115.com", url, cc);

            if (htmlRet.Success)
            {
                if (!string.IsNullOrEmpty(htmlRet.Content))
                {
                    var data = Newtonsoft.Json.Linq.JObject.Parse(htmlRet.Content);

                    if (data.Property("count").HasValues&& int.Parse(data.Property("count").Value.ToString()) > 0)
                    {
                        ret = true;
                    }
                }
            }

            return(ret);
        }
Beispiel #9
0
        public static int Get115TotalFileCount(int pageSize = 1150)
        {
            var url = string.Format(@"https://webapi.115.com/files?aid=1&cid=1834397846621504875&o=user_ptime&asc=0&offset=1&show_dir=1&limit={0}&code=&scid=&snap=0&natsort=1&record_open_time=1&source=&format=json", pageSize);
            var cc  = Get115Cookie();

            var htmlRet = HtmlManager.GetHtmlWebClient("https://115.com", url, cc);

            if (htmlRet.Success)
            {
                if (!string.IsNullOrEmpty(htmlRet.Content))
                {
                    var data = JsonConvert.DeserializeObject <FileListModel>(htmlRet.Content);

                    if (data != null && data.count > 0)
                    {
                        return(data.count % data.page_size == 0 ? data.count / data.page_size : data.count / data.page_size + 1);
                    }
                }
            }

            return(0);
        }
Beispiel #10
0
        public static FileListModel GetOneOneFileInFolder(string folder, OneOneFiveSearchType type, int page = 0, int pageSize = 1150)
        {
            FileListModel ret = new FileListModel();
            var           cc  = Get115Cookie();
            var           url = $"https://webapi.115.com/files?aid=1&cid={folder}&o=user_ptime&asc=0&offset={page}&show_dir=1&limit={pageSize}&code=&scid=&snap=0&natsort=1&record_open_time=1&source=&format=json&type={((int)type).ToString()}&star=&is_q=&is_share=";

            var htmlRet = HtmlManager.GetHtmlWebClient("https://115.com", url, cc);

            if (htmlRet.Success)
            {
                if (!string.IsNullOrEmpty(htmlRet.Content))
                {
                    ret = JsonConvert.DeserializeObject <FileListModel>(htmlRet.Content);

                    if (ret.data == null)
                    {
                        ret = GetMixedOneOneFileInFolder(folder, page, pageSize);
                    }
                }
            }

            return(ret);
        }
Beispiel #11
0
        private static bool Get115SearchResult(string cookieStr, string content, string host = "115.com", string reffer = "https://115.com/?cid=0&offset=0&mode=wangpan", string ua = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36 115Browser/12.0.0")
        {
            bool ret = false;

            CookieContainer cc = new CookieContainer();

            string[] cookies = cookieStr.Split(';');

            foreach (var cookie in cookies)
            {
                if (cookie.Contains("="))
                {
                    var cookieItemSplit = cookie.Split('=');
                    cc.Add(new Cookie
                    {
                        Name   = cookieItemSplit[0].Trim(),
                        Value  = cookieItemSplit[1].Trim(),
                        Domain = "115.com"
                    });
                }
            }

            var url     = string.Format("https://webapi.115.com/files/search?search_value=vdd-095&format=json");
            var htmlRet = HtmlManager.GetHtmlWebClient("https://115.com", url, cc);

            if (htmlRet.Success)
            {
                var data = JObject.Parse(htmlRet.Content);

                if (data.Property("count").HasValues&& int.Parse(data.Property("count").Value.ToString()) > 0)
                {
                    ret = true;
                }
            }

            return(ret);
        }
Beispiel #12
0
        public static List <SeedMagnetSearchModel> SerachListView(string content, CookieContainer cc)
        {
            List <SeedMagnetSearchModel> ret = new List <SeedMagnetSearchModel>();

            try
            {
                var serachContent = "https://btsow.club/search/" + content;
                var htmlRet       = HtmlManager.GetHtmlWebClient("https://btsow.club", serachContent, null, true);

                if (htmlRet.Success)
                {
                    HtmlAgilityPack.HtmlDocument htmlDocument = new HtmlAgilityPack.HtmlDocument();
                    htmlDocument.LoadHtml(htmlRet.Content);

                    string xpath = "//div[@class='row']";

                    HtmlNodeCollection nodes = htmlDocument.DocumentNode.SelectNodes(xpath);

                    foreach (var node in nodes.Take(nodes.Count - 1))
                    {
                        var text = node.ChildNodes[1].ChildNodes[1].InnerText.Trim();
                        var size = FileUtility.GetFileSizeFromString(node.ChildNodes[3].InnerText.Trim());
                        var date = node.ChildNodes[5].InnerText.Trim();
                        var a    = node.ChildNodes[1].OuterHtml;
                        var url  = a.Substring(a.IndexOf("\"") + 1);
                        url = url.Substring(0, url.IndexOf("\""));

                        SeedMagnetSearchModel temp = new SeedMagnetSearchModel
                        {
                            Title  = text,
                            Size   = size,
                            Date   = DateTime.Parse(date),
                            Url    = url,
                            Source = SearchSeedSiteEnum.Btsow
                        };

                        ret.Add(temp);
                    }

                    foreach (var r in ret)
                    {
                        var subHtmlRet = HtmlManager.GetHtmlWebClient("https://btsow.club", r.Url, cc, false);

                        if (subHtmlRet.Success)
                        {
                            htmlDocument = new HtmlAgilityPack.HtmlDocument();
                            htmlDocument.LoadHtml(subHtmlRet.Content);

                            xpath = "//textarea[@class='magnet-link hidden-xs']";

                            HtmlNode node = htmlDocument.DocumentNode.SelectSingleNode(xpath);

                            if (node != null)
                            {
                                r.MagUrl = node.InnerText;
                            }
                        }
                    }
                }
            }
            catch (Exception ee)
            {
            }

            return(ret);
        }
Beispiel #13
0
        public static List <SeedMagnetSearchModel> SearchSukebei(string id, CookieContainer cc = null)
        {
            //if (cc == null)
            //{
            //    var c = HtmlManager.GetCookies("https://sukebei.nyaa.si/");
            //    cc = new CookieContainer();
            //    cc.Add(c);
            //}

            List <SeedMagnetSearchModel> ret = new List <SeedMagnetSearchModel>();

            try
            {
                //var serachContent = "https://sukebei.nyaa.pro/search/c_0_0_k_" + id;
                //var htmlRet = HtmlManager.GetHtmlWebClient("https://sukebei.nyaa.pro", serachContent, cc);

                var serachContent = "https://sukebei.nyaa.si?f=0&c=0_0&q=" + id;
                var htmlRet       = HtmlManager.GetHtmlWebClient("https://sukebei.nyaa.si", serachContent, cc);

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

                    string xpath = "//tr";

                    HtmlNodeCollection nodes = htmlDocument.DocumentNode.SelectNodes(xpath);

                    foreach (var node in nodes.Skip(1))
                    {
                        var text = FileUtility.ReplaceInvalidChar(node.ChildNodes[3].InnerText.Trim());
                        var a    = node.ChildNodes[5].OuterHtml;
                        var size = node.ChildNodes[7].InnerText.Trim();
                        var date = node.ChildNodes[9].OuterHtml.Trim().Replace("<td class=\"text-center\" data-timestamp=\"", "").Replace("\"></td>", "");
                        //var complete = node.ChildNodes[15].InnerText.Trim();

                        var url = a.Substring(a.IndexOf("<a href=\"magnet:?xt") + 9);
                        url = url.Substring(0, url.IndexOf("\""));

                        int seconds = 0;

                        int.TryParse(date, out seconds);

                        DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
                        DateTime dt        = startTime.AddSeconds(seconds);

                        SeedMagnetSearchModel temp = new SeedMagnetSearchModel
                        {
                            Title = text,
                            Size  = FileUtility.GetFileSizeFromString(size),
                            Date  = dt,
                            Url   = "",
                            //CompleteCount = int.Parse(complete),
                            MagUrl = url,
                            Source = SearchSeedSiteEnum.Sukebei
                        };

                        ret.Add(temp);
                    }
                }
            }
            catch (Exception ee)
            {
            }

            return(ret.Where(x => x.Size >= 0).OrderByDescending(x => x.CompleteCount).ThenByDescending(x => x.Size).ToList());
        }
Beispiel #14
0
        public static List <SeedMagnetSearchModel> SearchJavBus(string avId, CookieContainer cc = null)
        {
            List <SeedMagnetSearchModel> ret = new List <SeedMagnetSearchModel>();

            var refere = "https://www.javbus.com/" + avId;

            var html = HtmlManager.GetHtmlContentViaUrl(refere, "utf-8", false, cc);

            if (html.Success)
            {
                var gidPattern = "var gid = (.*?);";
                var ucPattern  = "var uc = (.*?);";
                var picPattern = "var img = '(.*?)';";

                var gidMatch = Regex.Match(html.Content, gidPattern);
                var ucMatch  = Regex.Match(html.Content, ucPattern);
                var picMatch = Regex.Match(html.Content, picPattern);

                var gid = gidMatch.Groups[1].Value;
                var uc  = ucMatch.Groups[1].Value;
                var pic = picMatch.Groups[1].Value;

                var url = $"https://www.javbus.com/ajax/uncledatoolsbyajax.php?gid={gid}&lang=zh&img={pic}&uc={uc}&floor=922";

                var magHtml = HtmlManager.GetHtmlWebClient(url, null, "javbus.com", "", refere);

                if (magHtml.Success)
                {
                    HtmlDocument htmlDocument = new HtmlDocument();
                    htmlDocument.LoadHtml(magHtml.Content);

                    var magPattern = "//tr[@style=' border-top:#DDDDDD solid 1px']";

                    HtmlNodeCollection nodes = htmlDocument.DocumentNode.SelectNodes(magPattern);

                    if (nodes != null)
                    {
                        foreach (var node in nodes)
                        {
                            var namePart = "";
                            var sizePart = "";
                            var datePart = "";
                            var magUrl   = "";
                            var size     = 0d;

                            try
                            {
                                if (node != null)
                                {
                                    if (node.ChildNodes.Count >= 2)
                                    {
                                        namePart = node.ChildNodes[1].InnerText.Trim();
                                        magUrl   = node.ChildNodes[1].ChildNodes[1].Attributes["href"].Value;
                                    }

                                    if (node.ChildNodes.Count >= 4)
                                    {
                                        sizePart = node.ChildNodes[3].InnerText.Trim();
                                        size     = FileSize.GetByteFromStr(sizePart);
                                    }

                                    if (node.ChildNodes.Count >= 5)
                                    {
                                        datePart = node.ChildNodes[5].InnerText.Trim();
                                    }

                                    ret.Add(new SeedMagnetSearchModel()
                                    {
                                        CompleteCount = 0,
                                        Date          = DateTime.Parse(datePart),
                                        Size          = size,
                                        MagUrl        = magUrl,
                                        Source        = SearchSeedSiteEnum.JavBus,
                                        Title         = namePart,
                                        Url           = ""
                                    });
                                }
                            }
                            catch (Exception)
                            {
                            }
                        }
                    }
                }
            }

            return(ret);
        }
Beispiel #15
0
        public static MangaDetailVM GetMangaDetailHanhan(MangaCategorySourceType sourceType, string path)
        {
            MangaDetailVM ret = new MangaDetailVM();

            ret.Chapters = new List <MangaChapter>();

            var htmlRet = HtmlManager.GetHtmlWebClient("http://www.hanhan.net", path);

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

                    var picPath     = "//img[@class='pic']";
                    var detailPath  = "//ul[@class='detail-list cf']/li";
                    var infoPath    = "//div[@id='intro-all']//p";
                    var chapterPath = "//ul[@id='chapter-list-4']//a";

                    var picNode  = document.DocumentNode.SelectSingleNode(picPath);
                    var infoNode = document.DocumentNode.SelectSingleNode(infoPath);

                    var chapterNodes = document.DocumentNode.SelectNodes(chapterPath);
                    var detailNodes  = document.DocumentNode.SelectNodes(detailPath);

                    if (picNode != null)
                    {
                        ret.PicUrl    = picNode.Attributes["src"].Value.Trim();
                        ret.MangaName = picNode.Attributes["alt"].Value.Trim();
                    }

                    if (detailNodes != null && detailNodes.Count > 0)
                    {
                        foreach (var node in detailNodes)
                        {
                            if (node.Attributes.Count <= 0)
                            {
                                foreach (var subNode in node.ChildNodes)
                                {
                                    if (subNode.InnerText.StartsWith("漫画作者:"))
                                    {
                                        ret.Author = subNode.InnerText.Replace("漫画作者:", "");
                                    }
                                }
                            }
                            else
                            {
                                ret.MangaStatus = node.ChildNodes.FindFirst("a").InnerHtml;

                                ret.UpdateDate = DateTime.Parse(node.ChildNodes[1].ChildNodes[5].InnerText);
                                ret.UpdateInfo = "更新到:" + node.ChildNodes[1].ChildNodes[7].InnerText;
                            }
                        }
                    }

                    if (infoNode != null)
                    {
                        ret.Description = infoNode.InnerText.Trim();
                    }

                    if (chapterNodes != null)
                    {
                        foreach (var node in chapterNodes)
                        {
                            ret.Chapters.Add(new MangaChapter
                            {
                                Url         = "http://www.hanhande.net" + node.Attributes["href"].Value.Trim(),
                                ChapterName = node.ChildNodes.FindFirst("span").InnerText.Trim()
                            });
                        }
                    }
                }
                catch (Exception e)
                {
                    ret.MsgCode = VMCode.Exception;
                    ret.Msg     = e.ToString();
                }
            }
            else
            {
                ret.MsgCode = VMCode.Success;
                ret.Msg     = "网页获取失败";
            }

            return(ret);
        }
Beispiel #16
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);
        }