Пример #1
0
 /// <summary>
 /// Запрашивает у пользователя подтверждение операции "прочитать книгу"
 /// </summary>
 /// <param name="bookInfo">Данные о книге, которую планируется "прочитать"</param>
 /// <returns></returns>
 public static bool confirmReadOperation(BookMetaData bookInfo)
 {
     return(confirmOperation("В архиве будет создана следующая запись:",
                             bookInfo.dbRow,
                             "Подтвердите операцию (нажмите [Enter]): ",
                             ConsoleKey.Enter));
 }
Пример #2
0
        public void appendIdToWebIds(BookMetaData bookInfo)
        {
            // если файл был получен из облачной библиотеки, сохраним его ID в список ID прочитанных книг,
            // чтобы не предлагать его к прочтению в будущем
            long id = -1;

            if (bookInfo.file != null)
            {
                // Для библиотеки Флибусты
                try {
                    id = long.Parse(bookInfo.file.Name.Split(".".ToCharArray())[1]);
                    var result = System.IO.File.ReadAllLines(_toReadFlibusta.FullName).FirstOrDefault(s => s.EndsWith(";" + id));
                    if (result != null)
                    {
                        System.IO.File.AppendAllText(_haveReadWebIds.FullName, id + Environment.NewLine);
                    }
                } catch (Exception e) {
                    // Do nothing
                }
            }
            else
            {
                id = bookInfo.bookId;
                System.IO.File.AppendAllText(_haveReadWebIds.FullName, id + Environment.NewLine);
            }
        }
Пример #3
0
        /// <summary>
        /// Записывает информацию о прочитанной книге в "читательский дневник", при
        /// необходимости сохраняет файл с книгой в архив, затем удаляет книгу из локальной
        /// библиотеки (при наличии возможности) и из текущего списка книг "в чтении".
        /// </summary>
        /// <param name="bookInfo">Структура: строка для записи в дневник и ссылка на файл книги</param>
        public static void registerReadBook(BookMetaData bookInfo)
        {
            var fs = FileSystemService.Instance;

            fs.appendBookInfoToReadLog(bookInfo);

            if (bookInfo.dbRow.Contains("*"))
            {
                bookInfo.file = new FileInfo(fs.archiveBook(bookInfo));
            }

            if (bookInfo.file != null)
            {
                fs.removeFromLibrary(bookInfo.file);
                fs.removeFromQueue(bookInfo.file);
            }
        }
Пример #4
0
        public string archiveBook(BookMetaData bookInfo)
        {
            var gdPath = Environment.GetFolderPath(
                Environment.SpecialFolder.UserProfile) + @"\Google Диск\Book Archive\";
            var gdFileName = bookInfo.dbRow.Split("[".ToCharArray())[0].Trim(" ".ToCharArray());

            foreach (char c in Path.GetInvalidFileNameChars())
            {
                gdFileName = gdFileName.Replace(c, "."[0]);
            }
            if (bookInfo.file == null)
            {
                var pc = new ProxifiedConnection();
                bookInfo.file = new FileInfo(pc.DownloadFile(bookInfo.bookId));
            }

            System.IO.File.Copy(bookInfo.file.FullName, gdPath + gdFileName + bookInfo.file.Extension);
            return(bookInfo.file.FullName);
        }
Пример #5
0
        /// <summary>
        /// Запрашивает у пользователя дополнительную информацию о заданной книге
        /// </summary>
        /// <param name="_bookIndex">Номер книги в списке на чтение</param>
        /// <returns>BookMetaData: строка для записи в дневник и ссылка на файл</returns>
        public static BookMetaData getMetadataForFile(int _bookIndex, int _bookId)
        {
            var    bookInfo = new BookMetaData();
            string title;
            string author;
            int    pageCount;

            // Индекс книги в массиве начинается с нуля
            if (_bookIndex >= 0)
            {
                bookInfo.file = FileSystemService.Instance.getBookFromQueue(_bookIndex);
                Console.WriteLine("Выбран файл: " + bookInfo.file.Name);
                Console.Write("Введите название книги: ");
                title = Console.ReadLine();
                Console.Write("Введите автора книги: ");
                author = Console.ReadLine();
                Console.Write("Введите количество страниц: ");
                int.TryParse(Console.ReadLine(), out pageCount);
            }
            else
            {
                bookInfo.bookId = _bookId;
                Console.Write("Введите название книги: ");
                title = Console.ReadLine();
                Console.Write("Введите автора книги: ");
                author    = Console.ReadLine();
                pageCount = 0;
            }

            Console.Write("Введите рейтинг по 10-балльной шкале: ");
            int rating;

            int.TryParse(Console.ReadLine(), out rating);
            Console.Write("Введите доп.информацию [*^+@]: ");
            string code = Console.ReadLine();

            bookInfo.dbRow = string.Format("{0:yyyyMMdd} - " + title + ", автор " + author + " [" + pageCount + ":" + rating + "]" + code, DateTime.Today);
            return(bookInfo);
        }
Пример #6
0
 /// <summary>
 /// Записывает информацию о книге в читательский дневник. Для "облачных" файлов регистрирует
 /// ID в списке прочитанных, чтобы не предлагать этот файл в будущем
 /// </summary>
 /// <param name="bookInfo">Структура: строка для записи в дневник и ссылка на файл книги</param>
 public void appendBookInfoToReadLog(BookMetaData bookInfo)
 {
     System.IO.File.AppendAllText(_haveRead.FullName, bookInfo.dbRow + Environment.NewLine);
     appendIdToWebIds(bookInfo);
 }