Пример #1
0
        private static async Task Download()
        {
            var options = new ProgressBarOptions
            {
                ForegroundColor   = ConsoleColor.Yellow,
                BackgroundColor   = ConsoleColor.DarkYellow,
                ProgressCharacter = '─'
            };

            Console.WriteLine("Hello World!");
            Console.WriteLine("");
            IFileSystem sys    = new FileSystem();
            var         fox    = new Panda.SeriesParser();
            var         mgr    = new MangaDownloader(null, new List <ISeriesParser>());
            PageGetter  getter = Client2.GetDocumentAsync;

            var chapter = fox.CreateChapter("https://www.mangapanda.com/the-heroic-legend-of-arslan-arakawa-hiromu/63");

            var nrPages = await chapter.GetPageCount(getter);

            var p1 = await chapter.GetImageUrl(6, getter);

            var p2 = await chapter.GetImageUrl(7, getter);

            var p3 = await chapter.GetImageUrl(19, getter);

            var mrg = new MangaDownloader(sys, new List <ISeriesParser> {
                fox
            });
        }
Пример #2
0
        private static async Task Populate(params ISeriesParser[] parser)
        {
            var options = new ProgressBarOptions
            {
                ForegroundColor   = ConsoleColor.Yellow,
                BackgroundColor   = ConsoleColor.DarkYellow,
                ProgressCharacter = '─'
            };

            var memCache = new MemFile();

            var manager = new MangaDownloader(new FileSystem(), parser, Client2.GetDocumentAsync);
            var index   = new MangaIndex(manager, null, memCache);

            var             first = true;
            ConsoleProgress pb    = null;

            IProgress <double> GetProgress(string context)
            {
                pb?.Dispose();
                if (first)
                {
                    first = false;
                }
                else
                {
                    Console.WriteLine();
                    Console.WriteLine();
                }

                return(pb = new ConsoleProgress(options, context));
            }

            try
            {
                await index.Update(GetProgress);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            //res = await Task.WhenAll(manager.Providers.Select(p => manager.ListInstances(p, pb).ContinueWith(t => (t.Result, provider: p))));


            //var res = await MyDictionary;
            //MyDictionary = new AsyncLazy<Dictionary<string, MangaInfo>>(CreateDictionary);
        }
Пример #3
0
        private static async Task TestKakalot()
        {
            var options = new ProgressBarOptions
            {
                ForegroundColor   = ConsoleColor.Yellow,
                BackgroundColor   = ConsoleColor.DarkYellow,
                ProgressCharacter = '─'
            };
            var mrg = new MangaDownloader(new FileSystem(), new List <ISeriesParser> {
            });


            for (int i = 4; i < 9; i++)
            {
                var url           = $"http://mangakakalot.com/chapter/goblin_slayer_side_story_year_one/chapter_{i}";
                var chapterParser = new Kakalot.ChapterParser(url);

                using (var pb = new ConsoleProgress(options))
                {
                    await mrg.DownloadChapterTo(chapterParser, @"C:\Pile\Test", pb);
                }
            }
        }
Пример #4
0
        private static async Task GetMetaData(IMetaDataParser parser)
        {
            var options = new ProgressBarOptions
            {
                ForegroundColor   = ConsoleColor.Yellow,
                BackgroundColor   = ConsoleColor.DarkYellow,
                ProgressCharacter = '─'
            };

            var        cts    = new CancellationTokenSource();
            var        mgr    = new MangaDownloader(null, new List <ISeriesParser>());
            PageGetter getter = Client2.GetDocumentAsync;
            var        doc    = await getter("https://www.mangaeden.com/en/en-manga/naruto/");

            //var doc = await getter("http://manganelo.com/manga/read_naruto_manga_online_free3");
            var metaData = parser.GetMetaData(doc);

            var service = new MetaDataService(new List <IMetaDataParser>()
            {
                parser
            });

            var wasCalled = false;

            IProgress <double> GetProgress(string context)
            {
                if (context == "Instances" && !wasCalled)
                {
                    wasCalled = true;
                    Console.WriteLine($"Handling {context}");
                    Console.WriteLine();
                    return(new ConsoleProgress(options, context));
                }

                if (context == "MetaData")
                {
                    Console.WriteLine();
                    Console.WriteLine();
                    Console.WriteLine($"Handling {context}");
                    Console.WriteLine();
                    return(new ConsoleProgress(options, context));
                }

                cts.Cancel();
                return(null);
            }

            service.ReportProgressFactory = GetProgress;
            var t = service.Start(parser.ProviderName, cts.Token);

            try
            {
                await t;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            var res2 = await service.GetMetaData();

            var test   = res2.Where(a => a.metaData.Genres.HasFlag(Genre.MartialArts)).ToList();
            var unused = Enum.GetValues(typeof(Genre)).Cast <Genre>().Where(e => e != Genre.None).ToDictionary(g => g, _ => false);

            foreach (var valueTuple in res2)
            {
                foreach (var genre in valueTuple.metaData.Genres.Split())
                {
                    if (unused.ContainsKey(genre))
                    {
                        unused[genre] = true;
                    }
                }
            }

            var areNotUsed = unused.Where(kvp => !kvp.Value).Select(kvp => kvp.Key).ToList();

            Console.Read();
        }