• § 7.1 Программа-библиотекарь для книг в формате FictionBook
  • § 7.2 Утилита Booki
  • § 7.3 Программа-библиотекарь JEFLibrarian
  • § 7.4 Программа-библиотекарь MyHomeLib
  • § 7.5 FB2Fix
  • Часть VII

    Прочее программное обеспечение для работы с FictionBook

    § 7.1 Программа-библиотекарь для книг в формате FictionBook

    Вы уже привыкли читать «с экрана», вы читаете много, и ваша коллекция электронных книг постоянно растет. Но когда количество книг переваливает за вторую сотню, то внезапно обнаруживается, что найти нужную книгу становится все труднее.

    Поневоле приходишь к мысли, что нужен каталогизатор или оболочка, который позволит рассортировать массив файлов и эффективно ориентироваться в нем.

    Специально для этих целей Дмитрий Пустовит и Олег Князев написали программу FB2Librarien («Библиотекарь»).

    Данное описание верно для версии 1.4.0.0

    Основные функции и возможности программы:

    Ведет базу данных всех имеющихся книг. Информация хранятся в формате бесплатной СУБД Firebird 1.5.

    Автоматически сортирует книги, согласно описаниям (description).

    Отображает всю информацию о книге, включая аннотацию и обложку.

    Позволяет добавлять дополнительную информацию, например, подробные сведения об авторе.

    Поддерживает раздельную работу пользователей. Для каждого пользователя ведется отдельная история чтения книг, избранное.

    Позволяет пользователям оценивать книги и добавлять рецензии.

    Может экспортировать книги из библиотеки на ActiveSync устройство (поддерживаются устройства под управлением WinCE и PalmOS) или просто в отдельную папку.

    Может работать в локальной сети.

    Поддерживает скины .msstyle.

    Можно экспортировать список всех книг в html-файл.

    Установка программы

    Скачать программу можно с ftp-сервера Fictionbook.org. Раздел pub. Программа полностью бесплатна. Для работы FB2Librarien требуется M$ Windows 2000 или XP. Запуск программы под Windows 9x возможен, но там она работает не совсем корректно.

    Распакуйте архив в нужную директорию. Совсем не обязательно, чтобы она была в Program Files. Лучше всего создать директорию в корневом каталоге диска, например, D:\FB2LIBR.

    При этом установка Firebird на ПК вовсе не требуется. Необходимая dll-ка включена в дистрибутив программы. Сервер Firebird будет нужен только при работе в локальной сети.

    При первом запуске программы автоматически открывается пустая база данных. Она хранится в каталоге, где находится программа, в поддиректории Library.

    Можно использовать ее, а можно создать свою.

    Cоздание новой базы данных

    Новая база создается с помощью функции меню «Библиотека/Создать» (Ctrl+N).

    Выбираем способ хранения книг «База данных» или «Файловая система».

    При способе хранения «База данных» файлы книг хранятся в теле самой базы данных, в поле BLOB.

    При способе хранения «Файловая система» книги размещаются в специально отведенной папке, упакованные в архивы ZIP. Для каждого автора создается отдельная папка «имя_фамилия».

    Нужно указать местоположение файла базы и его формат (рекомендуется .fdb), а для способа хранения «Файловая система» еще и папку, где будут храниться книги — точку монтирования.

    Способ хранения данных можно в любой момент изменить. Делается это функцией меню «Библиотека/Изменить способ хранения».

    В настройках, «Инструменты/Опции», в разделе «Хранилище» тоже присутствует выбор «База данных/Файловая система». Однако попытка изменить способ хранения книг таким образом, может привести лишь к тому, что часть книг будет в базе, а часть — в папках.

    Иногда, после создания базы выскакивает окно с ошибкой и база не добавляется в список доступных баз. В таком случае вызываем функцию «Библиотека/Открыть» и добавляем ее вручную («Добавить в портал»).

    Чтобы начать работать с программой необходимо:

    а) авторизоваться;

    б) закачать книги в базу данных.

    Авторизация и управление пользователями.

    Чтобы выполнить какое-либо действие, затрагивающее содержимое базы данных, например, добавить книги в библиотеку, необходимо авторизоваться (ввести имя пользователя).

    Программа сама предложит вам авторизоваться, как только вы попытаетесь выполнить действие, которое доступно только для зарегистрированного пользователя.

    На панели инструментов есть специальная пиктограмма «Авторизация» (стилизованное изображение человека). Или нажмите Ctrl+L.

    Вводим имя пользователя (логин), и, если требуется, пароль. Щелкнув по кнопке со стрелкой, можно выбрать пользователя из списка.

    Изначально в базе уже есть встроенный пользователь «owner», имеющий права владельца библиотеки. По умолчанию ввод пароля для него не требуется.

    Если установить галочку «Запомнить», при последующих запусках программы будет осуществляться автоматический вход под соответствующим логином.

    Можно тут же создать нового пользователя. Для этого щелкните по ссылке «Регистрация».

    В появившемся окошке введите имя пользователя, и, если считаете нужным, пароль. Пароль вводится два раза.

    Данные о пользователях хранятся в самой базе данных библиотеки. Поэтому если вы создали новую базу, там нужно будет регистрироваться по-новой.

    Для редактирования списка пользователей есть функция «Инструменты/Пользователи».

    Редактировать список пользователей может только владелец базы.

    Щелкнув правой клавишей по нужной строке, можно назначить пользователю привилегии. Их, собственно, две. «DB Owner» (Владелец базы) и «Can Edit» (Может редактировать).

    Привилегия «Can Edit» всего лишь позволяет редактировать описание (description) книги.

    Привилегия «DB Owner» предоставляет пользователю администраторские права. Только владелец базы может удалять книги, настраивать синонимы авторов, менять настройки пользователей.

    Как быть если вы удалили пользователя owner, и в списке пользователей не осталось ни одного логина с правами владельца базы?

    Все просто. Создаем новую базу и открываем («Библиотека/Открыть») ее. Авторизуемся как пользователь owner и тут же открываем оставшуюся «бесхозной» базу. Регистрируем пользователя и немедленно присваиваем ему права «владелец базы». Вуаля!

    Добавление книг в библиотеку.

    Для пополнения базы новыми книгами существует команда «Библиотека\Добавить книгу».

    В верхней строчке панели «Source files» нужно указать каталог, в котором будет производиться поиск новых книг.

    Файлы книг могут быть упакованы в ZIP‑архивы.

    Затем вызываем команду «File\Поиск FB2-файлов».

    В панели «Source files» появится список найденных файлов с книгами.

    Пометив нужные файлы (если активна функция «Дополнительно\Помечать файлы в процессе поиска» все найденные файлы помечаются сразу), вызываем команду «File\Обработать выбранные файлы». В правой части экрана отображается ход процесса.

    Вся информация о выполненных операциях будет храниться, пока вы не очистите соответствующий журнал.

    Не следует добавлять за один раз более 1000 книг, так как это чревато зависанием программы.

    Paбота с программой

    Основное рабочее окно FB2Librarian разделено на три части и имеет четыре закладки. «Авторы», «Серии», «Жанры» и «Новинки» Соответственно, книги в них сортируются по фамилии автора, серии, жанру и поджанру, а также времени поступления в библиотеку.

    В закладке «Авторы» слева идет список авторов книг, входящих в библиотеку. По умолчанию — всех, но щелчком по букве алфавита вверху их можно отсортировать по нужной букве.

    В закладке «Серии», соответственно, слева находится список серий. Ну и так далее.

    Правая часть экрана для всех закладок почти одинакова.

    Сверху идет список книг, отсортированный по соответствующему признаку. Ниже — описание текущей книги. Название книги, вхождение в серию и порядковый номер в ней, жанр, а также аннотация книги.

    Рядом, левее, находится картинка обложки, если она есть. Ниже обложки — количество рецензий и оценка читателей.

    При наведении курсора на картинку обложки, появляются две кнопки с изображением лупы и дискеты. С их помощью картинку можно просмотреть в увеличенном виде или сохранить в файл. Впрочем, вместо щелчка по пиктограмме лупы с тем же результатом можно щелкнуть по самой картинке.

    Щелкнув по цифре оценки (или тому месту, где она должна находиться) можно вызвать функцию голосования — оценки книги. Теоретически — по пятибалльной системе, практически — произвольную. Оценка, которую программа выводит под обложкой книги, является средним арифметическим всех выводимых оценок.

    Двойной клик по названию книги в списке открывает ее в программе чтения. По умолчанию это HaaliReader, исполняемый файл которого входит в дистрибутив программы, но в опциях можно назначить и другую читалку.

    К большому сожалению, пока не существует читалки, предусматривающей раздельные настройки для каждого пользователя индивидуально. Поэтому если библиотекой пользуются одновременно несколько человек, могут возникнуть некоторые неудобства, особенно, если пользователи читают одни и те же книги.

    Функция поиска в программе довольно спартанская. По слову или фрагменту слова, регистронезависимая. Поиск производится в полях базы «Автор», «Название», «Серия».

    Довольно много функций завязано на правую кнопку мыши.

    Кликнув по имени автора в соответствующем списке, в закладке «Авторы», можно ввести подробную информацию о данном авторе («Редактировать информацию об авторе»), удалить автора (вместе с его книгами), а так же назначить синонимы.

    Что такое синонимы?

    Некоторые авторы публикуются как под собственным именем, так и под псевдонимами. Или под несколькими псевдонимами. Например: Кир Булычев — Игорь Всеволодович Можейко, Юрий Никитин — Гай Юлий Орловский. Чтобы объединить их как одного автора, в программе введены синонимы.

    Можно ввести синонимы вручную («Редактировать синонимы»). А можно назначить конкретного автора как синоним другого, используя функцию «Добавить как синоним». Автор исчезнет из списка, а его книги будут добавлены к книгам того автора, которому вы его назначили в синонимы. Внимание! Операция необратима!

    Последняя функция, доступная по щелчку правой клавишей в списке авторов, «Проверка написания». Она позволяет выявить некириллические символы в имени-фамилии автора.

    Щелчок правой кнопкой мыши по названию книги в списке книг (любая закладка) вызывает следующие функции (большинство из них продублировано в пункте главного меню «Книга»:

    «Пометить как прочитанную» (Ctrl+Y). Название книги выделяется зеленым цветом и рядом появляется зеленый квадратик. Книга добавляется в список «История».

    «Снять пометку о прочтении» (Ctrl+Alt+Y) — снимает эту пометку.

    «Запланировать к прочтению»(Ctrl+P). Добавляет книгу в отдельный список книг, которые вы планируете прочесть в первую очередь. Cписок можно просмотреть с помщью пиктограммы на основной панели («Показать запланированные к прочтению») включает дополнительную закладку.

    «Исключить из запланированных к прочтению»(Ctrl+Alt+P) — соответственно, удаляет книгу из списка заплнированных к прочтению.

    «Добавить в избранное» (Ctrl+B), «Удалить из избранного» (Ctrl+Alt+B). Помещает книгу в список «Избранное» или удаляет из оного. Таким образом можно выделять книги, которые особенно заинтересовали. При этом программа считает, что вы прочли эту книгу, и одновременно помечает ее, как прочитанную. Список «Избранное» можно просмотреть, нажав пиктограмму «золотая звездочка» на панели инструментов.

    «Просмотреть рецензии» (Ctrl+Q). Вызывает функцию работы с рецензиями.

    «Цитаты» (Ctrl+W) — вызывает функцию работы с цитатами.

    «Голосование» (Ctrl+U). Позволяет выставить книге оценку.

    «Читать в выбранной программе» (Ctrl+H). Просмотр книги. Аналог двойного щелчка.

    «Сохранить книгу(и) на диск» (Ctrl+S) — сохраняет книгу (или несколько книг) в указанную папку, в виде zip-файла.

    «Отправить книгу(и) на WinCE устройство». Позволяет отправить книгу на устройство под управлением Windows CE (Pocket PC). Должен быть проинсталлирован драйвер устройства или программа-синхронизатор.

    «Отправить книгу(и) на Palm устройство». Отправляет книгу в папку, где ее «подцепит» синхронизатор Palm.

    «Править информацию о книге» — редактирование description книги. Сделано эта функция качественно, гораздо лучше, чем в FB Editor. Можно даже масштабировать картинку обложки

    Требуется привилегия «Может редактировать» или «Владелец базы».

    «Удалить книгу» (Ctrl+D) — удаляет книгу из базы. Требуется привилегия «Владелец базы».

    Еще в контекстное меню можно добавлять пользовательские функции. Делается это при помощи кнопочки «Пользовательское меню» («Инструменты\Опции», закладка «Общее»).

    Откроется форма для настройки меню:

    Чтобы ввести новый пункт меню, нажмите кнопку [+] на панели формы. Откроется форма для ввода нового пункта меню.

    Заполните поля:

    Unpack — отметьте, если хотите, чтобы сжатый файл был предварительно распакован перед вызовом команды. Если не отмечен, файл будет в формате Zip.

    Item caption — введите название пункта менюApplication — введите или выберите программу, которая будет вызываться при выборе пункта меню. Допускается выбирать исполняемые файлы (*.exe, .com), скрипты (*.cmd, *.bat), а также произвольные файлы, которые ассоциированы в системе с приложениями.

    Parameters — параметры, которые будут добавлены в командную строку при вызове программы.

    Допускаются следующие специальные символы, которые имеют специальное значение (обратите внимание, что это строчные буквы латинского алфавита):

    %i — полное имя файла с книгой (с расширением fb2, если пункт Unpack отмечен, или zip, если не отмечен);

    %o — имя файла без пути (с расширением fb2, если пункт Unpack отмечен, или zip, если не отмечен).

    %n — имя файла без пути и без расширения.

    Нажмите кнопку Ok, чтобы создать пункт меню.

    Если нужно удалить пункт меню, нажмите кнопку [–].

    Чтобы сохранить пользовательское меню, нажмите кнопку “Save” (с изображением дискетки).

    Затем еще раз Ok, чтобы закрыть диалог “Настройки”.

    Пример.

    Чтобы создать пункт меню, при выборе которого книга будет копироваться в определенную папку (например, для последующего чтения, в распакованном виде в папку c:\ToRead), введите следующее:

    Unpack = отмечено

    Item caption = Копировать для чтения (fb2)

    Application = cmd.exe

    Parameters = /c copy “%i” “c:\ToRead\%o”

    В результате выбора этого пункта меню распакуется файл с книгой и выполнится команда:

    cmd.exe /c copy “c:\fb2lib\library\tmp\book.fb2” “c:\ToRead\book.fb2”

    (По материалам файла Fb2Lib_UserMenu_Guide.doc) (© 2007, TaciturnMan)

    Чуть подробнее о рецензиях. Функция вызывается щелчком по количеству рецензий под рисунком обложки или по правому щелчку мыши. Пиктограмма с зеленым знаком «плюс» позволяет добавить свою оценку книги в произвольной форме. Логин, дата и время добавляются автоматически. Пиктограмма с красным крестиком вызывает отдельное окно, где можно редактировать и удалять рецензии. Обычный пользователь — только свои, владелец базы — все.

    Аналогичным образом работает функция «Цитаты».

    В программе «зашита» последняя версия списка жанров FictionBook. Но, на всякий случай, есть функция их обновления («Инструменты\Загрузить XML с жанрами»). В открывшемся окошке выбираем нужный файл (обычно это FictionBookGenres.xsd)

    В целом, несмотря на некоторую «сырость», программа является простым и удобным средством работы с большим количеством книг.

    § 7.2 Утилита Booki

    Программа предназначена для обработки файлов с книгами.  Не требует инсталляции, после первого запуска может вызываться из проводника через контекстное меню обрабатываемых типов файлов (функция «Утилита Booki»).

     Умеет обрабатывать текстовые, fb2 и rtf файлы (в том числе в zip-архивах). Выполняет операции как с отдельным файлом, так и сразу со всеми файлами в текущем каталоге. Может запускаться в режиме, когда операции c файлами выполняются без вывода окна программы на экран. Выполняемые операции и обрабатываемые файлы задаются через параметры командной строки. Параметры командной строки подробно описаны в документации к программе — небольшом html-файле, котрорый «зашит» в exe-шник программы. Дублировать его здесь ради увеличения объема книги, я не считаю возможным.

    Программа позволяет:

    1. Переименовывать файлы с книгами. Программа определяет автора, название и серию книги из файла, формирует новое имя файла и переименовывает файл. Имя файла формируется скриптом, который задается в настройках программы. Синтаксис и функции скрипта описаны в документации к программе.

    2. Перемещать («раскассировать») файлы по каталогам. Программа определяет автора, название и серию книги из description файла, формирует имя каталога, если необходимо создает его, и перемещает файл в этот каталог. Имя каталога формируется скриптом, который задается в настройках программы. Синтаксис и функции скрипта описаны в документации.

    3. Перекодировать fb2 файлы из кодировки UTF-8 в WIN1251, что уменьшает размер файла примерно на 40% (в zip-архиве на 10-15%). Если в файле встретится символ, который отсутствует в кодировке WIN1251, то программа не перекодирует файл.

    4. Переконвертировать файл из fb2 в txt. В настройках программы задается формат создаваемого текстового файла.

    5. Перекодировать текстовые файлы из кодировки DOS CP866 в WIN1251.

    К сожалению, все эти солидные достоинства омрачаются мелкими, но от этого еще боее неприятными недостатками.

    Помимо того, что утилита платная, большим недостатком Booki являются несколько багов, кочующих из версии в версию. К примеру, если в заголовке книги имеются две и более подсерии, то такую книгу программка в упор не видит.

    Хорошо хоть, в последних версиях конвертация в обычный текст доведена до вполне приемлемого уровня. Заголовки секций и эпиграфы отбиваются пустыми строками.

    Кстати, если во время преобразования книги в текст будет выдано сообщение наподобие: «Файл не переконвертирован. Нарушена структура», тщательно проверьте сноски на предмет их валидности. Метки «id» должны быть в тэгах section, а не где-либо еще. Также следует знать, что Booki не признает наличия в сносках пустых строк (empty-line) — еще один переходящий баг.

    Надо отдать должное, автор программы постоянно ее совершенствует. Правда, значительная часть его усилий уходит не на исправление застарелых багов (которые, повторно отдадим должное, тоже потихоньку выводятся), а на создание «удобств» пользователям. Вроде мегабайтного регистрационного файла или постоянного запроса кода запуска с сайта автора (последнюю вредную наклонность приходилось даже лечить — вмешательством в код программы). К счастью, в последующих версиях, автор перестал доводить пользователей до такого греха, вернувшись к более  традиционному nag-screen. [7.1]

    В общем-то, несмотря на все нюансы, Booki — достойная программка. Самый большой плюс ее, конечно же, в том, что она без каких-либо дополнительных библиотек или особых требований к ОС (программка прекрасно чувствует себя под Win9x) может сконвертировать FB2 в txt.

    (При написании параграфа использовалась оригинальная документация утилиты Booki.)

    § 7.3 Программа-библиотекарь JEFLibrarian

    С недавних пор выбор программы для ведения FB2-библиотеки не сводится к FB2Librarian. Написанная уже упоминавшимся hedgehog77, учаcтником форума Fictionbook.org, программа JEFLibrarian представляет собой неплохую альтернативу, да еще и многоплатформенную. Приверженцы Linux, несомненно, по достоинству оценят наличие версии под эту самую свободную в мире ОС.

    Как и FB2PDF, программа написана на языке Java  и представляет собой пакет Java-библиотек (платформа Eclipse RCP) с небольшим запускным exe-файлом.

    В качестве движка для базы данных используется Derby.

    Пока что программа находится в стадии активной разработки. Поэтому ограничимся кратеньким обзором, особенно не вдаваясь в тонкости.

    Установка программы сводится к распаковке архива в нужную папку.

    После первого запуска все рабочее окно занимает вкладка Welcome.

    Так как никакой функциональной нагрузки эта вкладка, пока что, не несет, проще всего ее закрыть, щелкнув на крестик, в заголовке вкладки, возле надписи «Welcome». Теперь мы получили доступ к рабочему интерфейсу. Как видим, он, хотя и несколько необычен для Windows, но вполне симпатичен и дружелюбен. Он состоит из окон-вкладок, которые могут сворачиваться в док-панели.

    Имеется восемь вкладок: «Home» — общая информация и статистика по базе, она же история чтения книг. «Authors» — непосредственно книги, рассортированные по авторам. «Series», «Genres», «Keywords» — сортировка книг, соответственно, по сериям, жанрам и ключевым словам. «Search» — поиск и, последняя «Add books» — добавление новых книг.

    Первым делом надо создать новую базу. Вызываем пункт меню Library\New book. Выбираем имя файла и папку, где она будет располагаться. Потом вводим внутреннее имя базы (допустим, «Моя либа»), и, если требуется краткую аннотацию. Также можно выбрать способ хранения книг — внутри базы или внешний. Во втором случае нужно будет указать еще корневой каталог базы. Вообще, на момент написания книги, внутренний способ хранения казался более отлаженным.

    Теперь можно добавлять в базу книги. Вызовите пункт меню Library\Add book или щелкните по заголовку нужной вкладки. Предусмотрено три способа добавления новых книг — выбрать папку, выбрать отдельный файл и скачать файл из Сети.

    После выбора папки слева тут же будет отображен список файлов FB2, которые находятся в этой папке, а также вложенных в нее папках.

    Просмотрев список и подправив его в случае необходимости, жмем кнопку «Start import» (над списком, напоминает кнопку «Play» в медиа-проигрывателях). После окончания процесса итоги его можно увидеть внизу справа.

    Все. Можно работать с базой. Программа исправно сортирует книги, показывает обложки и  аннотации. Правда, чтобы читать книги, требуется сперва указать в настройках путь к exe-файлу читалки.

    Более того, книги из базы, помимо редактирования description можно редактировать во внешем редакторе. Делается это несколько замысловатым, но эффективным, способом.

    После выбора в контекстном меню пункта «Edit Book (ext. editor)» книга появится в списке «Files to edit» на вкладке «Home». Следом запустится программа-редактор, путь к которой был указан в опциях. После редактирования и сохранения книга останентся во временной папке библиотекаря, при этом будут доступны команды «Edit» (вернуться к редактированию), «Save» (сохранить книгу в базе) и «Cancel» ( просто удалить файл из временной папки, сбросив, таким образом, все изменения).

    В опциях библиотекаря также предусмотрена возможность подключения внешних утилит, например, конвертора в PDF или LRF.

    Резюме. Если автору хватит терпения и энтузиазма довести разработку до конца, мы получим весьма приличный инструмент для наведения порядка в коллекции fb2-книг.

    § 7.4 Программа-библиотекарь MyHomeLib

    Еще один библиотекарь для FB2-книг написали Алексей Пеньков и Николай Рыманов. Программа динамично развивалась, благополучно доросла до релиза и не собирается на этом останавливаться.

    От других наработок эту софтину выгодно отличают простой и понятный, не перегруженный лишними функциями, интерфейс, стабильность работы, отменное быстродействие.

    Книги можно сортировать по авторам, сериям и жанрам. Наличествует продвинутый поиск (закладка «Фильтр») по семи параметрам, с применением квази-SQL запросов. И, конечно же, полюбившиеся произведения можно отобрать в «Избранное». А впоследних версиях программы добавлиась возможность создавать пользовательские группы.

    Но самая выдающаяся «фича» МyHomeLib — это, разумеется, управление коллекциями книг с известного сайта «Русская библиотека в Эквадоре» («Либрусек»). Администрация этой замечательной библиотеки настолько любезна, что предоставляет возможность скачивания всей коллекции книг  в архивах, правда, немаленьких, по 5000-10000 книг. Вот с этими-то архивами и работает MyHomeLib.

    Для этого в комплекте с инсталлятором программы поставляются файлы, с помощью которых можно легко воссоздать базу всех FB2-книг, входящих в библиотеку Либрусек. На момент написания книги эта библиотека включала около 115 000 книг более чем 20 000 авторов, общим «весом» за 20 гигабайт!

    И, даже если у вас нет возможности скачать такой колоссальный объем данных, МyHomeLib может работать непосредственно с Либрусеком, on-line. Нужные книги будут скачиваться по мере необходимости.

    Прилагающийся к программе подробный help исчерпывающе описывает все функции софтины. Что, кроме всего прочего, позволяет автору этой книги не утяжелять ее файл еще одним «самотужным» руководством пользователя.

    Поражает, с какой взвешенностью авторы подходят к добавлению новых функций в свое детище. Ничего лишнего, только действительно необходимое.

    Некоторый недостаток функционала прекрасно компенсируется возможностью создания пользовательских скриптов.

    В общем, перед нами отличный пример продуманного, сбалансированного, и, главное, стопроцентно отвечающего своему назначению программного продукта.

    § 7.5 FB2Fix

    Как следует из названия, основная задача этой утилиты — полная проверка FB2-файлов на валидность с возможностью их коррекции. Кроме того, автор, скрывшийся под претенциозным псевдонимом Gremlin II, наделил программу «талантами» работать с архивами, в том числе RAR и вложенными ZIP, использовать пользовательские спецификации XSD, транслитерировать имена файлов и переименовывать их по шаблону, заменять «непечатные» символов, автоматически конвертировать жанры из версии 2.0 в версию 2.1, и даже перекодировать книжки. Отдельным пунктом значится приведение в порядок невалидных книг из библиотеки Либрусек.

    Возможна обработка как отдельных файлов, так и целых каталогов.

    Утилита выполняет полную проверку на соответстие xml-файла книги спецификации (schema) FB2. Если книга не проходит проверку на валидность, FB2Fix пытается исправить ее. Это производится следующим образом. Вначале производится проверка всех тэгов. Не закрытые (или же лишенные открывающего дескриптора) тэги — закрываются. Также софтина пытается разобраться, с «висящими» в тексте символами «<» и «>» на предмет, элементы ли это тэгов или же просто огрехи работы конвертора. При этом программа, как и все «ишкуштвенные интилекты» не застрахована от ошибок. Отсюда мораль: после правки «проблемного» файла не пожалеть пару минут на сличение результата с оригиналом.

    Все признанные огрехами «<» и «>» в тексте заменяются на &lt; и &gt;, как и положено по спецификации. Символы с кодами от 01 до 08 заменяются на «-», символы 0b, 0c и 0e — 0x1f на « ».

    Сама утилита представляет собой консольное приложение. То есть, запуск ее возможен посредством использования командной строки («Command Prompt») с передачей рабочих параметров через нее.

    Несмотря на это, для работы FB2Fix требуется наличие в системе Micro$oft .NET Framework 2.0. Также софтина может работать под Linux (с установленным Mono и пакет(ами) libmono-i18n{1,2}.0-cil).

    Давайте познакомимся с FB2Fix поближе.

    Скачайте и распакуйте архив в папку, Например, C:\FB2TOOLS\FB2FIX.

    Создайте на диске (лучше в корне) две рабочие папки. Например INBOOK и OUTBOOK.

    Войдите в папку FB2FIX. Для удобства, лучше все эти операции проделывать в каком-нибудь консольном файл-менеджере, например, Far Manager.

    Забросьте в папку INBOOK с десяток книг FB2.

    Теперь давайте запустим FB2Fix.

    Вот так:

    FB2Fix.exe D:\INBOOK /output:D:\OUTBOOK

    Когда утилита отработает, загляните в папку OUTBOOK. Вы обнаружите там две папки — Bad и Good. Как нетрудно догадаться, первая предназначена для книг, которые не прошли проверку и, к тому же, их не удалось исправить. В папку Good отправляются все остальные.

    Итак, алгоритм работы в общих чертах ясен. Кладем книги, нуждающиеся в проверке, в папку INBOOK и запускаем программу. Кстати, выходную папку можно и не указывать, тогда директории Bad и Good будут созданы в той же папке, где находится FB2Fix.

    К сожалению, для тестирования программы мне просто неоткуда было взять подходящее количество невалидных книг, так что пришлось импровизировать. То есть создавать файлы с ошибками вручную.

    Незакрытый тэг body оказался проге не по зубам. Тэги descripion и cite она «исправила», вставив закрывающий тэг в самый конец файла. И перед удаленным открывающим тэгом <p> корректор спасовал. А вот с конструкцией <strong><emphasis></strong></emphasis> программа справилась «на ура». Незакрытые тэги <stanza> <p> FB2Fix также исправил как положено. А незакрытый тэг <i> софтина просто удалила.

    В то же время FB2Fix позволяет себе «не замечать» некритичные ошибки. Например, неправильно оформленные сноски, когда метка поставлена не на секцию, а на ее заголовок, или вообще абзац.

    В description успешно прошедшей проверку книги добавляется строка

    <custom-info info-type="fb2fix-status">Passed</custom-info>

    а в случае внесения правок версия книги увеличивается на 0.1. Правда, почему-то не всегда.

    При повторном прогоне все работает корректно: строка в custom-info «размножаться» не будет.

    В общем, если сделать скидку на «искусственность» тестирования (ну какой такой конвертор создаст fb-шку c незакрытым body или description) то можно признать, что со своими обязанностями корректор справляется вполне успешно.

    Теперь пройдемся по ключам программы. Их не так уж и много, но все же может показаться, что больше, чем нужно. Некоторые ключи имеют сокращенную форму.

    Ключ /compress[+|-] (сокращенная форма /c) — позволяет разрешить/запретить сжатие книжек «на выходе» алгоритмом ZIP. По умолчанию сжатие разрешено. Таким образом

    FB2Fix.exe D:\INBOOK /c-

    заставит FB2Fix записывать прошедшие обработку книжки в неупакованном виде.

    Просматривая обработанные книжки, вы можете заметить, что заголовок книги отформатирован отступами. За эту фичу отвечает ключ /indentheader[+|-]. Как можно догадаться, по умолчанию опция включена.

    Можно также заставить FB2Fix аналогично форматировать body книги. При помощи ключа /indentbody[+|-]. Само собой, со значением «+».

    FB2Fix.exe D:\INBOOK\mybook2.fb2 /indentbody+

    Как уже говорилось, версия документа, в случае внесения правок, увеличивается на 0.1. Если понадобится отключить эту опцию, то вам поможет ключ /incversion[+|-]. С модификатором «-».

    Ключ /dtd:<строка> позволяет выбрать альтернативную DTD FB2. Значение по умолчанию — fb2.dtd.

    Следующая интересная фича — перекодировка! По умолчанию FB2Fix сохраняет книжки, используя кодовую таблицу UTF-8. Использование ключа /encoding:<строка> заставит FB2Fix сохранять «выходные» книги в определенной кодировке. Так, например при использовании,

    FB2Fix.exe D:\INBOOK /encoding:windows-1251

    книжки «на выходе» будут в кодировке Win-1251.

    Кроме «windows-1251» поддерживаются значения «utf-8», «utf-16», а также «koi8r».

    Если вам вдруг понадобится отказаться от конвертации старых жанров FB2 2.0 в 2.1 достаточно использовать ключ /mapgenres[+|-] с модификатором «-»

    Между прочим, конвертация жаноров — настраиваемая. Ее конфигурация содержится в файле genrestransfer.xml. Устройство его весьма незамысловато. Каждому поджанру отведена вот такая секция.

    <subgenre value="prose_history">

      <genre-descr lang="en" title="Historical Prose"/>

      <genre-descr lang="ru" title="Историческая Проза"/>

      <genre-alt value="literature_history" format="fb2.0"/>

      <genre-alt value="literature_critic" format="fb2.0"/>

    </subgenre>

    Понятно, что значения указанные в атрибуте value тэга genre-alt будут заменены на аналогичное значение тэга subgenre.

    Можно сделать свою конфигурацию и вызывать ее при помощи ключа /genres:<строка>.

    Использование ключа /validate[+|-] с модификатором «+» вынудит FB2Fix использовать для проверки книг альтернативную XSD-схему. А указать имя файла этой схемы поможет ключ /xsd:<строка>.

    Следующий важный ключ — /rename[+|-]. С модификатором «+» он велит FB2Fix переименовывать файлы, причем с сортировкой. И не абы-как, а согласно установке-паттерну.

    По умолчанию этот паттерн равен:

    [*NLA*\]*NL*[ *NM*] *NF*[ *NN*]\*NL* *BN*[(*SN* - *SII*)]

    Синтаксис подстановок, полностью заимствован из утилиты переименования файлов для библиотекаря FBLibrary.

    Поскольку заимствование оказалось творческое, с дополнениями, приведем здесь расшифровку подстановок полностью.

    *NLA*, *NFA*, *NMA* — первая буква соответственно фамилии, имени, отчества автора книги.

    *NL*, *NF*, *NM*, *NN* — соответственно фамилия, имя, отчество, ник автора.

    *BN* — название книги.

    *SN* — название серии. Остро не хватает обработки подсерий…

    *SI*, *SII*, *SIII* — номер серии. В подстановках *SII* и *SIII* этот номер приводится к двух- и трехзначному соответственно, путем добавления нулей. Т.е. номер 7 будет включен в состав имени файла как «007».

    *GNR*, *GNE* — название жанра, по-русски или по-английски.

    Символ «\», как вы уже догадались, служит разделителем папок. А квадратные скобки объединяют фрагменты паттерна. Нет, к примеру, отчества, значит, не нужен и пробел перед ним. Нет серии — скобки не должны стать мусором в имени файла…

    Само собой, можно указать пользовательский паттерн. При помощи ключа /pattern:<строка>.

    К примеру, вот такой паттерн:

    *NL* *NF*\*SN*\[*SII* - ]*BN* {*NF* *NL*}

    раскассирует книги в папки «фамилия-имя автора». Для серий будут созданы вложенные папки. Имя файла будет представлять собой номер-в-серии_название_{имя-фамилия автора}. Немного непривычно, но очень удобно. Особенно, учитывая ограниченнную отображаемую длину имени  файла…

    Для настройки переименования имеются вот такие ключи:

    /translify[+|-]. С модификатором «-» он запретит FB2Fix транслитерировать имена файлов. Т.е. если книга русскоязычная, то и имя файла будет, как полагается, кириллицей.

    /upper[+|-]. С модификатором «+» указывает FB2Fix использовать только в именах файлов и папок только заглавные буквы.

    /lower[+|-]. Аналогично предыдущему, но будут использоваться только строчные буквы.

    /replacechar:<строка>. Заменяет символ «пробел» в именах файлов на значение <строка>. По умолчанию оно равно «_»

    /maxlength:<целое число>. Ограничивает длину имени файла. По умолчанию это значение равняется -1, что, как нетрудно догадаться, отключает эту функцию.

    /strict[+|-]. Включает «жесткий» режим для имен файлов. По умолчанию отключено. В этом режиме из имени удаляются все символы, кроме алфавитно-цифровых и символов \/[]()<>-_*, . Между прочим, хорошая вещь. Позволяет избавиться от лишних точек в именах файлов, если, например имя автора сокращено (допустим, не Алексей, а А.).

    Пару примеров на закуску. Вот эта последовательность ключей позволяет сохранять выходные файлы в «альдебарановском» стандарте (фамилия_имя_название)

    FB2Fix.exe C:\INBK /lower+ /strict+ /rename+ /pattern:"*NL* *NF* *BN*"

    А эта — в старом стандарте Fenzin (Фамилия_Название_(Серия-№)

    FB2Fix.exe C:\INBK /rename+ /pattern:"*NL* *BN*[ (*SN* - *SI*)]"

    Следующая группа ключей относится к протоколированию работы программы. Ключ /logfile:<строка> указывает имя файла для текстового протокола (лога). Если такой файл ужет существует, протокол будет дописан в его конец. А ключ /loglevel:<фиксированная строка> (короткая форма /l). определяет тип сообщений выводимых в этот файл. Предусмотрены варианты Off (никакие), Critical (критические), Error (ошибки), Warning (предупреждения), Information (нормальные) и Verbose.

    Следующий у нас — ключ /recurse[+|-] (короткая форма /r). Использованный с модификатором «-» он запретит программе заглядывать в поддиректории, если таковые во входной папке имеются.

    Ключ /force[+|-], употребленный с модификатором «+» заставит FB2 повторно обрабатывать файлы, уже прошедшие проверку.

    C ключом /output:<строка>, указывающем программе путь для выходных файлов, вы познакомились в самом начале. Добавлю лишь, что он имеет короткую форму /o.

    А если во входной папке имеется какой-нибудь файл или  папка, трогать которые не нужно, их достаточно указать ключу /exclude:<строка>. Ключ имеет короткую форму — /e.

    И последнее. Строку с ключами можно записать в так называемый «файл ответов» (response file). И потом вызывать ее при помощи ключевого символа @.

    Отмечу что имеется «файл ответов» по умолчанию — fb2fix.rsp. Ключи-опции, внесенные туда должны исполняться автоматически при любом вызове программы.

    Должны — но не исполняются. И заявленный в комментариях в начале fb2fix.rsp ключ /noconfig также не работает. Очевидно, в последней версии эта фича попросту отключена. Файл fb2fix.rsp отныне вызывается только через «@».

    И приоритеты более не работают. Если в .rsp-файле прописано «/translify-», а в командную строку добавить «/translify+» программа выругается, дескать, дублирвание ключей и выплюнет на экран содержимое встроенного help.

    В свете этих фактов становится непонятно, для чего тогда большинство ключей имеют два аргумента «+» и «-». Исправно работающих, между прочим.

    Приверженцы графического интерфейса, могут использовать специальную программу-оболочку — shell, которая избавит их от необходимости вручную прописывать длиннющие заклинания ключей и модификаторов.

    При первом запуске оболочка запросит у вас местонахождение исполняемого файла FB2Fix, а также предложит настроить несколько базовых опций, назначение которых ясно из самих названий. Настройки, предложенные по умолчанию, вполне годятся для работы. Можно лишь поставить галочку возле «Разрешить ручное редактирование командной строки». Кстати, повторное изменение базовых опций не предусмотрено. Это возможно лишь после удаления файла FFShell.ini.

    Выбор исходной папки с книгами осуществляется простым щелчком мыши в левом поле рабочего окна. При помощи Shift и Ctrl можно выбрать сразу несколько папок.

    Справа отображается содержимое папок Good и Bad.

    Под «входным» и «выходными» полями видна подготовленная оболочкой командная строка. Кнопка с зеленым треугольничком запускает ее на исполнение.

    Левее кнопки пуска притулилась кнопка настроек. Щелкнув по ней, мы вызовем окно, с большим количеством опций, каждая из которых эквивалентна определенному ключу FB2Fix (предусмотрена даже всплывающая подсказка). Любая поставленная галочка тут же добавляет соответствующий ключ в командную строку. Здесь же можно сохранить настройки в файл .rsp.

    Резюме. Если не считать правку книг, созданных с помощью злосчастного Librusec toolkit, можно с уверенностью сказать, что областью применения FB2Fix станет проверка и исправление книг, созданных при помощи различных «самоклепанных» конверторов. Наподобие описанных в § 3.7. Кроме того, софтина неплохо смотрится  в качестве сортировщика-перекодировщика, хотя до скриптовых настроек booki ей, конечно, далековато. Тем паче, что упомянутый booki до сих пор не умеет именовать файлы латиницей.


    Примечания:



    7.1

    NAG-screen — назойливое окошко с требованием регистрации, периодически появляющееся при использоании большинства shareware-продуктов. Считается, что оно должно побудить пользователя уплатить деньги за программу.







     

    Главная | В избранное | Наш E-MAIL | Добавить материал | Нашёл ошибку | Наверх