static void ProcessTest(string[] args) { switch (args[0]) { case "version": Version.ExportVersion(); break; case "manage": var t = new Thread(() => { Application.Run(new Manage()); }); t.Start(); break; case "preempt_dq": DownloadConsole.Instance.queue.Preempt(); break; case "unpreempt_dq": DownloadConsole.Instance.queue.Reactivation(); break; case "hiyobi": var html = Net.NetCommon.DownloadString("https://hiyobi.me/info/1305694"); var article = Component.Hiyobi.HiyobiParser.ParseGalleryConents(html); break; case "hiyobi2": var html1 = Net.NetCommon.DownloadString("https://hiyobi.me/list/1"); var article1 = Component.Hiyobi.HiyobiParser.ParseGalleryArticles(html1); break; case "query": HitomiDataSearchAdvanced.to_linear(HitomiDataSearchAdvanced.make_tree("(a b) - (c d) - (e f)")); break; case "version_check": Version.UpdateRequired(); break; case "dc": var html2 = Net.NetCommon.DownloadString("http://gall.dcinside.com/board/view/?id=comic_new1&no=7118416&page=1"); DCParser.ParseBoardView(html2); break; case "non-h": var html3 = Net.NetCommon.DownloadString("https://hiyobi.me/manga/info/1848"); HiyobiParser.ParseNonHArticles(html3); break; case "msm": var html4 = Net.NetCommon.DownloadString("http://mangashow.me/detail.php?manga_id=4969"); MangashowmeParser.ParseSeries(html4); var html5 = Net.NetCommon.DownloadString("http://mangashow.me/viewer.php?chapter_id=79688"); MangashowmeParser.ParseImages(html5); break; case "tree": var html6 = Net.NetCommon.DownloadString("https://www.google.com/search?q=anime&newwindow=1&rlz=1C1GIGM_enKR776KR776&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjS-J2cxejfAhWT-mEKHSpkCqsQ_AUIDigB&biw=1573&bih=814"); var tree = new HtmlTree(html6); tree.BuildTree(); Console.Instance.Write(Monitor.SerializeObject(tree.GetLevelImages(11))); break; case "ls": HtmlLocalServer.Instance.Start(); break; case "lpkor": var x = "진화론의 시야에서 벗어난 생물학은 아무 의미가 없다."; var xl = string.Join("", x.Select(y => LPKor.IsHangul(y) ? LPKor.Disassembly(y) : y.ToString())); Console.Instance.WriteLine(xl); var xr = LPKor.Assembly(xl); Console.Instance.WriteLine(xr); xl = string.Join("", x.Select(y => LPKor.IsHangul3(y) ? LPKor.Disassembly3(y) : y.ToString())); Console.Instance.WriteLine(xl); xr = LPKor.Assembly3(xl); Console.Instance.WriteLine(xr); break; case "heap": var rl = new List <int>(); var r = new Random(); for (int i = 0; i < 20; i++) { rl.Add(r.Next() % 100); } var h = new Heap <int>(); foreach (var xx in rl) { h.Push(xx); } rl.Sort(); rl.Reverse(); for (int i = 0; i < 20; i++) { Console.Instance.WriteLine($"{rl[i]}, {h.Front}"); h.Pop(); } var hh = new UpdatableHeap <int>(); break; case "ydl": ydlWrapper.download(); ydlWrapper.test(); break; case "stack": StackTrace st = new StackTrace(); Console.Instance.WriteLine(st.ToString()); break; } }
/// <summary> /// E Hentai Magic Number를 이용해 작품 정보를 가져옵니다. /// </summary> /// <param name="magic_number"></param> /// <returns></returns> public static HArticleModel?GetArticleData(int magic_number) { string magic = magic_number.ToString(); Monitor.Instance.Push($"[HCommander] [1] {magic}"); // // 1. 히토미 데이터로 찾기 // var search_hitomi = HitomiLegalize.GetMetadataFromMagic(magic); if (search_hitomi.HasValue) { // 히토미 데이터가 존재한다면 데이터의 유효 여부를 판단한다. try { var url = $"https://hitomi.la/galleries/{magic}.html"; var request = WebRequest.Create(url); using (var response = request.GetResponse()) { using (var responseStream = response.GetResponseStream()) { // 최종 승인 return(ConvertTo(search_hitomi.Value, url, magic)); } } } catch { } } Monitor.Instance.Push($"[HCommander] [2] {magic}"); // // 2. Hiyobi를 이용해 탐색한다 // if (search_hitomi.HasValue && search_hitomi.Value.Language == "korean") { try { var html = NetCommon.DownloadString(HiyobiCommon.GetInfoAddress(magic)); var article = HiyobiParser.ParseGalleryConents(html); return(ConvertTo(article, HiyobiCommon.GetInfoAddress(magic), magic)); } catch { } } Monitor.Instance.Push($"[HCommander] [3] {magic}"); // // 9.3/4 샰쮘뽣?뛤3쇼뵀?gVA덲탭k융뷠킢쪳1SPS?XF퍵8C샜쁬 // var f = ExHentaiData.data.AsParallel().Where(x => (x >> 40) == magic_number).ToList(); if (f.Count > 0) { try { //var url = $"https://e-hentai.org/g/{magic}/{f[0] ^ 1L * magic_number << 40:x}/"; //var html2 = NetCommon.DownloadExHentaiString(url); //var article = EHentaiParser.ParseArticleData(html2); //return ConvertTo(article, url, magic); throw new Exception(); } catch { var url = $"https://exhentai.org/g/{magic}/{f[0] ^ 1L * magic_number << 40:x}/"; var html2 = NetCommon.DownloadExHentaiString(url); var article = ExHentaiParser.ParseArticleData(html2); return(ConvertTo(article, url, magic)); } } // // 3. GalleryBlock을 이용해 제목을 가져온다. // string title = ""; try { var html = NetCommon.DownloadString($"{HitomiCommon.HitomiGalleryBlock}{magic}.html"); var article = HitomiParser.ParseGalleryBlock(html); title = article.Title; } catch { Monitor.Instance.Push($"[HCommander] [0] {magic}"); return(null); } // // 4. 'Show Expunged Galleries' 옵션을 이용해 Ex-Hentai에서 검색한 후 정보를 가져온다. // try { var html = NetCommon.DownloadExHentaiString($"https://exhentai.org/?f_doujinshi=1&f_manga=1&f_artistcg=1&f_gamecg=1&f_western=1&f_non-h=1&f_imageset=1&f_cosplay=1&f_asianporn=1&f_misc=1&f_search={title}&page=0&f_apply=Apply+Filter&advsearch=1&f_sname=on&f_stags=on&f_sh=on&f_srdd=2"); if (html.Contains($"/{magic}/")) { var url = Regex.Match(html, $"(https://exhentai.org/g/{magic}/\\w+/)").Value; var html2 = NetCommon.DownloadExHentaiString(url); var article = ExHentaiParser.ParseArticleData(html2); return(ConvertTo(article, url, magic)); } } catch { } Monitor.Instance.Push($"[HCommander] [0] {magic}"); return(null); }
public static void ProcessHiyobi(string url, bool unstable = false) { Task.Run(() => { if (url.StartsWith("https://hiyobi.me/manga/info/")) { MainWindow.Instance.Fade_MiddlePopup(true, "접속중..."); var html = NetCommon.DownloadString(url); var articles = HiyobiParser.ParseNonHArticles(html); var title = HiyobiParser.ParseNonHTitle(html); MainWindow.Instance.ModifyText_MiddlePopup($"가져오는중...[0/{articles.Count}]"); for (int i = 0; i < articles.Count; i++) { articles[i].ImagesLink = HitomiParser.GetImageLink(NetCommon.DownloadString(HiyobiCommon.GetDownloadMangaImageAddress(articles[i].Magic))); MainWindow.Instance.ModifyText_MiddlePopup($"가져오는중...[{i + 1}/{articles.Count}]"); } int count = 0; foreach (var article in articles) { string dir = Path.Combine(Path.Combine(Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "hiyobi"), DeleteInvalid(title)), DeleteInvalid(article.Title)); Directory.CreateDirectory(dir); var se = Koromo_Copy.Interface.SemaphoreExtends.MakeDefault(); se.Referer = url; count += article.ImagesLink.Count; DownloadSpace.Instance.RequestDownload($"hiyobi-nonh: {article.Title}", article.ImagesLink.Select(x => x.StartsWith("http://") || x.StartsWith("https://") ? x : $"https://aa.hiyobi.me/data_m/{article.Magic}/{x}").ToArray(), article.ImagesLink.Select(x => Path.Combine(dir, !x.StartsWith("http://images-blogger-opensocial.googleusercontent.com/") ? HttpUtility.UrlDecode(HttpUtility.UrlDecode(x.Split('/').Last())) : HttpUtility.UrlDecode(HttpUtility.UrlDecode(HttpUtility.ParseQueryString(new Uri(x).Query).Get("url").Split('/').Last())))).ToArray(), se, dir + '\\', null ); } MainWindow.Instance.FadeOut_MiddlePopup($"{count}개({articles.Count} 작품) 항목 다운로드 시작..."); } else if (url.StartsWith("https://hiyobi.me/info/")) { if (unstable) { MainWindow.Instance.Fade_MiddlePopup(true, $"불안정한 작업 진행중...[{unstable_request}개]"); } else { MainWindow.Instance.Fade_MiddlePopup(true, "접속중..."); } var imagelink = HitomiParser.GetImageLink(NetCommon.DownloadString(HiyobiCommon.GetDownloadImageAddress(url.Split('/').Last()))); var article = HiyobiParser.ParseGalleryConents(NetCommon.DownloadString(url)); string dir = HitomiCommon.MakeDownloadDirectory(article); article.ImagesLink = imagelink; Directory.CreateDirectory(dir); DownloadSpace.Instance.RequestDownload(article.Title, imagelink.Select(y => HitomiCommon.GetDownloadImageAddress(article.Magic, y)).ToArray(), imagelink.Select(y => Path.Combine(dir, y)).ToArray(), Koromo_Copy.Interface.SemaphoreExtends.Default, dir, article); Directory.CreateDirectory(dir); if (unstable) { Interlocked.Decrement(ref unstable_request); } if (unstable && unstable_request != 0) { MainWindow.Instance.Fade_MiddlePopup(true, $"불안정한 작업 진행중...[{unstable_request}개]"); } else { MainWindow.Instance.FadeOut_MiddlePopup($"{imagelink.Count}개 이미지 다운로드 시작..."); } } }); }
static void ProcessTest(string[] args) { switch (args[0]) { case "version": Version.ExportVersion(); break; case "manage": var t = new Thread(() => { Application.Run(new Manage()); }); t.Start(); break; case "preempt_dq": DownloadConsole.Instance.queue.Preempt(); break; case "unpreempt_dq": DownloadConsole.Instance.queue.Reactivation(); break; case "hiyobi": var html = Net.NetCommon.DownloadString("https://hiyobi.me/info/1305694"); var article = Component.Hiyobi.HiyobiParser.ParseGalleryConents(html); break; case "hiyobi2": var html1 = Net.NetCommon.DownloadString("https://hiyobi.me/list/1"); var article1 = Component.Hiyobi.HiyobiParser.ParseGalleryArticles(html1); break; case "query": HitomiDataSearchAdvanced.to_linear(HitomiDataSearchAdvanced.make_tree("(a b) - (c d) - (e f)")); break; case "version_check": Version.UpdateRequired(); break; case "dc": var html2 = Net.NetCommon.DownloadString("http://gall.dcinside.com/board/view/?id=comic_new1&no=7118416&page=1"); DCParser.ParseBoardView(html2); break; case "non-h": var html3 = Net.NetCommon.DownloadString("https://hiyobi.me/manga/info/1848"); HiyobiParser.ParseNonHArticles(html3); break; case "msm": var html4 = Net.NetCommon.DownloadString("http://mangashow.me/detail.php?manga_id=4969"); MangashowmeParser.ParseSeries(html4); var html5 = Net.NetCommon.DownloadString("http://mangashow.me/viewer.php?chapter_id=79688"); MangashowmeParser.ParseImages(html5); break; case "tree": var html6 = Net.NetCommon.DownloadString("https://www.google.com/search?q=anime&newwindow=1&rlz=1C1GIGM_enKR776KR776&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjS-J2cxejfAhWT-mEKHSpkCqsQ_AUIDigB&biw=1573&bih=814"); var tree = new HtmlTree(html6); tree.BuildTree(); Console.Instance.Write(Monitor.SerializeObject(tree.GetLevelImages(11))); break; case "ls": HtmlLocalServer.Instance.Start(); break; } }