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