Exemplo n.º 1
0
        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;
            }
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        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}개 이미지 다운로드 시작...");
                    }
                }
            });
        }
Exemplo n.º 4
0
        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;
            }
        }