/// <summary> /// Запрашивает у пользователя подтверждение операции "прочитать книгу" /// </summary> /// <param name="bookInfo">Данные о книге, которую планируется "прочитать"</param> /// <returns></returns> public static bool confirmReadOperation(BookMetaData bookInfo) { return(confirmOperation("В архиве будет создана следующая запись:", bookInfo.dbRow, "Подтвердите операцию (нажмите [Enter]): ", ConsoleKey.Enter)); }
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); } }
/// <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); } }
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); }
/// <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); }
/// <summary> /// Записывает информацию о книге в читательский дневник. Для "облачных" файлов регистрирует /// ID в списке прочитанных, чтобы не предлагать этот файл в будущем /// </summary> /// <param name="bookInfo">Структура: строка для записи в дневник и ссылка на файл книги</param> public void appendBookInfoToReadLog(BookMetaData bookInfo) { System.IO.File.AppendAllText(_haveRead.FullName, bookInfo.dbRow + Environment.NewLine); appendIdToWebIds(bookInfo); }