Выбрать главу

Ключ /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:<строка> указывает имя файла для текстового протокола (лога). Если такой файл ужет существует, протокол будет дописан в его конец. А ключ /logleveclass="underline" <фиксированная строка> (короткая форма /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.