Esempio n. 1
0
        private async Task <CBookEntity> CreateBook(FileInfo file)
        {
            CBookEntity book = await bookService.FindByNameAsync(file.DirectoryName, file.Name);

            if (book != null)
            {
                Console.WriteLine("文件已存在...");

                return(book);
            }

            book = new CBookEntity();

            book.Path = file.DirectoryName;
            book.Name = file.Name;

            book.Author   = ComicUtils.ParseAuthor(book.Name);
            book.Title    = ComicUtils.ParseTitle(book.Name);
            book.Language = ComicUtils.ParseLanguage(book.Name);

            book.Length = file.Length;

            book.XInsert_ = file.CreationTime;
            book.XUpdate_ = file.LastWriteTime;

            book = await bookService.SaveAsync(book);

            return(book);
        }
Esempio n. 2
0
        private async Task <byte[]> ReadAsync(string file, string cover)
        {
            return(await Task <byte[]> .Run(() =>
            {
                FileInfo f = new FileInfo(file);

                if (!f.Exists)
                {
                    Console.WriteLine("文件不存在...");
                    return none;
                }

                using (var archive = ArchiveFactory.Open(file))
                {
                    try
                    {
                        IArchiveEntry result = null;

                        foreach (var entry in archive.Entries)
                        {
                            if (result == null && !entry.IsDirectory && ComicUtils.IsImage(entry.Key))
                            {
                                result = entry;

                                if (StringUtils.IsBlank(cover))
                                {
                                    break;
                                }
                            }

                            if (StringUtils.IsEqual(entry.Key, cover))
                            {
                                result = entry;
                                break;
                            }
                        }

                        if (result != null)
                        {
                            return ImageUtils.PreviewBuffer(result, width, height);
                        }
                    }
                    catch (ArchiveException ex)
                    {
                        Console.WriteLine(file);
                        Console.WriteLine(ex);
                        //throw;
                    }
                    catch (CryptographicException ex)
                    {
                        Console.WriteLine(file);
                        Console.WriteLine(ex);
                    }
                }

                return none;
            }));
        }
Esempio n. 3
0
        private async Task DiscoveryComic(string path, bool children)
        {
            DirectoryInfo root = new DirectoryInfo(path);

            if (!root.Exists)
            {
                Console.WriteLine("目录不存在");
                // 文件目录不存在
                // TODO: 这里应该有个报警.
                return;
            }

            if (children)
            {
                DirectoryInfo[] dirs = root.GetDirectories();

                foreach (var dir in dirs)
                {
                    await DiscoveryComic(dir.FullName, children);
                }
            }

            FileInfo[] files = root.GetFiles();

            foreach (var file in files)
            {
                if (!ComicUtils.IsArchive(file.Name))
                {
                    // 如果当前文件不是漫画档案
                    continue;
                }

                CBookEntity book = await CreateBook(file);

                BAuthorEntity author = await CreateAuthor(book.Author);
            }
        }
Esempio n. 4
0
        private async Task preparing()
        {
            Console.WriteLine("识别文件中的有效图片.");

            string file = Path.Combine(book.Path, book.Name);

            FileInfo f = new FileInfo(file);

            if (!f.Exists)
            {
                Console.WriteLine("文件不存在...");
                return;
            }


            // IArchive archive = null;
            try
            {
                var archive = ArchiveFactory.Open(file);

                Console.WriteLine("开始对内容排序.");

                entries = archive.Entries
                          .Where(a => (!a.IsDirectory && ComicUtils.IsImage(a.Key)))
                          .OrderBy(a => a.Key)
                          .ToList();
            }
            catch (CryptographicException ex)
            {
                Console.WriteLine("打开文件需要密码.");
                Console.WriteLine(ex);
            }


            Console.WriteLine("文件页数:" + entries.Count);

            // 过滤不是图片的压缩包文件,并按文件名排序

            if (book.Count != entries.Count)
            {
                Console.WriteLine("更新页码数.");

                book.Count = entries.Count;

                await bookService.UpdateAsync(book);
            }


            Console.WriteLine("找到[" + entries.Count + "]张图片");

            EntryPaginator.DataSource = entries;

            if (_Paged && book.Index > 0 && book.Index <= entries.Count)
            {
                await EntryPaginator.HandlePageIndexChange(new PaginationEventArgs(book.Index, 1));
            }

            entry = EntryPaginator.Paged().ToList();

            //Console.WriteLine
            await Task.CompletedTask;
        }