Главная   |   Скриншоты программы   |   Документация   |   File remaner   |   Поддержка пользователей
Содержание документации:
  Установка программы
  Определение имени файла для переменования файлов с книгами
  Язык скриптов
  Определение автора и названия книги из текстового файла
  Перекодирование fb2 файлов из UTF-8 в WIN1251
  Конвертирование fb2 файла в текстовый файл
  "Горячие" клавиши в программе


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

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

Возможно настроить вызов программы из контестного меню fb2 файлов в проводнике. Для этого в программе выберите пункт меню "Настройки". На закладке "Общие" поставьте галочку на "fb2" в разделе "Добавить пункт меню вызова программы в контекстное меню файлов". В проводнике в контекстном меню для fb2 файлов появится пункт "Открыть в Booki".

[Содержание документации] [На главную]

≡ Определение имени файла для переменования файлов с книгами

Для переименования файла с книгой необходимо определить новое имя файла. Есть два метода определения имени файла:
–  на основе шаблонов. Например, задан шаблон имени файла "%a - %n". Имя файла получается заменой в шаблоне модификатора %a на фамилию и имя автора, %n на название книги. Простой и самый распостраненный метод определения имени файла. Существенный недостаток метода в том, что формирование имени файла ограничено модификаторами, которые предусмотрел разработчик в программе;
–  на основе скрипта. Скрипт представляет собой небольшую программу на простом языке программирования. На вход скрипта подаются фамилия, имя автора и название книги. Программа, переименовывающая файл, разбирает и выполняет команды скрипта, в результате чего на выходе скрипта формируется имя файла. Преимущество метода заключается в том, что имя файла может формироваться практически по любым правилам. Но для разработки или изменения скрипта пользователь должен обладать небольшими навыками программирования.

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

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

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

[Содержание документации] [На главную]


≡ Язык скриптов

Идентификатор переменной начинается с символа '$', может содержать символы 'A'..'Z', 'a'..'z', '_', '0'..'9'. Переменные бывают 2-х типов: строковые, числовые целые со знаком. Переменные не объявляются. Тип переменной определяется при первом присваивании её значения - строкового или числового. После того как тип переменной определен, ей нельзя присваивать значение другого типа.

Строковая константа представляет собой последовательность символов заключенных в апострофы или двойные кавычки. Чтобы в строковой константе указать апостроф, двойные кавычки или слэш перед ними ставиться символ '\'.

На вход скрипта подаются переменные:
$title - название книги (текстовая)
$authorno - количество авторов (числовая)
$seq - серия книги (текстовая)
$seqnum - номер в серии (текстовая)
$subseq - подсерия книги (текстовая)
$subseqnum - номер в подсерии (текстовая)
$genreno - кол-во жанров (числовая)
$publisher - издательство
$publcity - город издания
$publyear - год издания
$isbn - ISBN книги
$srcurl - ссылка на сайт, откуда был скачан исходный текст книги
$srcocr - информация о людях отсканировавших и вычитывавших книгу
$translatorno - количество переводчиков
$isannt - если есть аннотация, то не равна нулю. Если аннотации нет, равна нулю
$lang - язык книги
$langsrc - язык книги-оригинала (содержимое тега <src-lang>> внутри тега <title-info>)
$srctitle - название книги-оригинала
$srclang - язык книги-оригинала (содержимое тега <lang> внутри тега <src-title-info>)
$srcdir - каталог исходного файла (без "\" на конце)
$srcfile - имя исходного файла
$srcfileext - расширение исходного файла (начинается с ".", например ".txt")
$bookfile - имя файла с книгой (если исх. файл не заархивирован, то $bookfile = $srcfile, иначе $bookfile - имя файла в архиве, а $srcfile - имя архивного файла)
$bookfileext - расширение файла с книгой

Скрипт для определения имени файла должен сформировать имя файла без расширения в переменной $filename. Скрипт для определения каталога должен сформировать имя каталога в переменной $dir.

В строке допускается только один оператор. Строка начинающаяся с // является комментарием.

Оператор присваивания:
$переменная = операнд
или
$переменная = операнд1 +|- операнд2
или
$переменная = функция(операнд1, ...)
Операнд может быть переменной, строковой и числовой константой. Типы операндов должны совпадать. Для строковых операндов допускается только оператор +.

Функции доступные в скрипте:
author(i, p) - возвращает i-го автора. i должна быть от 1 до $authorno. Если p = 'l', функция возвращает фамилию, 'f' - имя, 'm' - отчество, 'n' - ник (сетевой псевдодим), 'lf' - фамилию имя, 'fl' - имя фамилию, 'lfm' - фамилию имя отчество, 'fml' - имя отчество фамилию
genre(i) - возвращает i-тый жанр книги. i должна быть от 1 до $genreno
genrematch(i) - возвращает процентное соответствие книги i-му жанру. i должна быть от 1 до $genreno
translator(i, p) - возвращает i-го переводчика. i должна быть от 1 до $translatorno. Если p = 'l', функция возвращает фамилию, 'f' - имя, 'm' - отчество, 'n' - ник (сетевой псевдодим), 'lf' - фамилию имя, 'fl' - имя фамилию, 'lfm' - фамилию имя отчество, 'fml' - имя отчество фамилию
len(str) - возвращает кол-во символов в строке
left(str, n) - возвращает первые n символов строки str
mid(str, p, n) - возвращает n символов строки str начиная с позиции p. Первый символ с строке имеет позицию 1.
rtrim(str) - удаляет пробелы в конце строки
ltrim(str) - удаляет пробелы в начале строки
trim(str) - удаляет пробелы в начале и конце строки
repl(str, src, des) - заменяет в строке str все вхождения подстроки src на строку des
upper(str) - переводит строку в верхний регистр
lower(str) - переводит в строку в нижний регистр
cstr(int) - возвращает строковое представление числа
isdef(name) - возвращает ненулевое значение, если переменная c именем name определена

Условный оператор:
if (условие) оператор присваивания
или
if (условие) {
   ...
}

Оператор цикла:
while (условие) {
   ...
}

Условие в операторах if и while:
операнд1 =|<>|>|<|>=|<= операнд2
Операнд может быть переменной, строковой и числовой константой. Типы операндов должны совпадать. Для строковых операндов допускается только операторы сравнения = и <>.

В скрипте формирующем заголовок текстового файла используются процедуры:
printp(str) - форматирует и выводит строку как отдельный параграф
printannt() - выводит аннотацию

[Содержание документации] [На главную]


≡ Определение автора и названия книги из текстового файла

Определение автора и названия книги из текстового файла является не тривиальной задачей, т.к. не существует определенных правил, по которым в текстовом файле указывается автор и название книги.

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

Итак строка с автором определена и содержит, например, "Петр Сергеевич Иванов, Алексей Петров". Программа разбивает строку на основе запятых и получает две строки с авторами: "Петр Сергеевич Иванов" и "Алексей Попов". Далее происходит анализ строки с каждым автором для определения фамилии, имени и отчества. В строке с автором ищется первый пробел с конца, всё что правее пробела и есть фамилия. Для нашего примера это Иванов и Попов. Далее ищется первый пробел в строке с автором, всё что левее пробела есть имя. Для нашего примера это Петр и Алексей. Оставшаяся часть строки между именем и фамилией есть отчество. Для нашего примера это Сергеевич, а для второго автора отчество не указано.

Разбор строки с названием книги происходит следующим образом. Например, строка с названием содержит "Смелый побег (Исторические хроники #2)". Если последний символ строки ")", то программа считает, что в конце строки в круглых скобках находится серия книги. Программа ищет открывающую скобку "(" и всё что находится между скобками есть строка с серией книги, остальная часть строки есть название книги. Для нашего примера строка с серией "Исторические хроники #2", а название книги "Смелый побег". Программа разбирает строку с серией на название серии и номер книги в серии. Для этого выделяет число с конца строки до первого нечислового символа. Если нечисловым символом является пробел, "#" или "-", то выделенное число есть номер книги в серии, а остальная часть строки есть название серии. Для нашего примера название серии "Исторические хроники", номер книги в серии "2".

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

Настройка "Игнорировать строки содержащие". Если указанная в данной настройке строка содержится в строке текстового файла, то программа считает, что в обрабатываемой строке файла нет автора или названия и книги и просто пропускает строку. В настройке можно указать несколько строк разделив их точкой с запятой. Например, текстовый файл содержит:
  ==============================================
Петр Сергеевич Иванов, Алексей Попов
##############################################
Смелый побег (Исторические хроники #2)
Если в настройке "Игнорировать строки содержащие" указать строку "===;###", то программа пропустит первую и третью строку текстового файла, не пытаясь выделить из строк автора или название книги.

Настройка "Не учитывать подстроки". Указанная в данной настройке строка исключается (вырезается) из обрабатываемой строки текстового файла. В настройке можно указать несколько строк разделив их точкой с запятой. Например, текстовый файл содержит:
  Автор: Петр Иванов
Название: Цветная радуга
Если настройке "Не учитывать подстроки" указать строку "Автор:;Название:", то программа будет определять автора из строки "Петр Иванов" игнорируя подстроку "Автор:", а название из строки "Цветная радуга" игнорируя подстроку "Название:".

[Содержание документации] [На главную]


≡ Перекодирование fb2 файлов из UTF-8 в WIN1251

Большинство книг в формате fb2 храняться в двух кодировках: UTF-8 и WIN1251. Кодировка UTF-8 содержит символы (буквы, цифры и знаки) множества национальных алфавитов. Символ в кодировке UTF-8 занимает один, два или три байта. Латинские буквы в кодировке UTF-8 занимают один байт, кириллические буквы занимают три байта. Кодировка WIN1251 значительно проще UTF-8 и содержит только латинские и кириллические буквы, цифры, общеупотребляемые знаки. Всего 256 символов, любой символ в кодировке WIN1251 занимает один байт.

Т.к. большинство книг используют только латинские и кириллические буквы, то для хранения таких книг достаточно использовать кодировку WIN1251. Кодировка UTF-8 для таких книг является избыточной. Преимущество хранения книг в кодировке WIN1251 по сравнению с UTF-8 заключается в уменьшении размера файла с книгой. Размер файла с книгой в кодировке WIN1251 меньше размера файла в UTF-8 в 1.7 раза. Если файл с книгой зарахивирован (архив zip формата), то разница не столь существенна и составляет 1.2 раза.

Если в кодировке WIN1251 кириллический символ занимает один байт, а в UTF-8 три байта, то почему же размер файла с книгой меньше всего в 1.7, а не в 3 раза? В книге присутствуют управляющие теги записанные латинскими буквами, а в обоих кодировках латинские буквы занимают по одному байту. Кроме того, обычно в файле есть картинка с обложкой книги, которая хранится просто как данные. Разница размера в 1.7 раза для несжатых файлов с книгами и 1.2 для файлов с книгами в архиве получена экспериментальным путем.

Операция перекодирования файлов с книгами из UTF-8 в WIN1251, реализованная в программе, абсолютна безопастна. Никакая информация из книги не теряется при перекодировании. В том случае, если в книге встречается символ, который не может быть представлены в кодировке WIN1251, то программа указывает код символа в кодировке Unicode. Формат fb2 допускает указание кода символа в кодировке Unicode, вместо самого символа.

В том случае, если используемая вами программа для чтения книг не понимает коды символов в fb2 файле, вы можете отключить указание кодов символов в настройках программы. В этом случае, встретив в книге символ, который не может быть представлены в кодировке WIN1251, программа не перекодирует книгу в UTF-8 и выдаст сообщение об ошибке.

[Содержание документации] [На главную]


≡ Конвертирование fb2 файла в текстовый файл

Программа позволяет переконвертировать fb2 файл в обычный тектовый файл. В настройках программы на закладке "FB2 -> TXT" задается формат создаваемого текстового файла.

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

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

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

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

Дополнительно в настройках задается:
–  кодировка текстового файла: win1251 или utf-8;
–  создается ли просто тектовый файл или текстовый файл в zip архиве или в том же виде, что исходный fb2 файл;
–  каталог, в котором создается текстовый файл. Если каталог не задан, то текстовый файл создается в том же каталоге, что исходный fb2 файл.

[Содержание документации] [На главную]


≡ "Горячие" клавиши в программе

F2  – переименовать файл;
Enter  – переименовать файл (курсор должен находится в поле с именем файла);
F6  – переместить файл;
F8  – удалить файл;
Ctrl–F  – задать фильтр вывода файлов;
Ctrl–R  – переключение режима вывода файлов: из текущего каталога и подкаталогов\только из текущего каталога;
Ctrl–\  – переход в корень текущего диска. Повторное нажатие – переход к списку дисков.
Ctrl–Shift–1 (2 или 3)  – запомнить текущий каталог.
Ctrl–1 (2 или 3)  – перейти в запомненный каталог.

[Содержание документации] [На главную]

X