Booki v1.8.4
Программа предназначена для обработки файлов с книгами. Не требует инсталяции, после первого запуска может вызываться из проводника через контекстное меню обрабатываемых типов файлов. Позволяет обрабатывать текстовые, fb2 и rtf файлы (в том числе в zip архивах). Выполняет операции как с отдельным файлом, так и сразу со всеми файлами в текущем каталоге. Может запускаться в режиме, когда операции c файлами выполняются без вывода окна программы на экран. Выполняемые операции и обрабатываемые файлы задаются через параметры командной строки.
Программа
позволяет:
1. Переименовывать файлы с книгами. Программа определяет автора,
название и серию книги из файла, формирует новое имя файла и
переименовывает файл. Файл можно переименовать нажав кнопку
"Переименовать",
F2 или Enter, если курсор находиться в поле имени файла. Имя файла
формируется скриптом, который задается в настройках программы.
Синтаксис и функции скрипта описаны далее.
Назначение операции: cкачивая из интернета книги обычно получаешь файлы
с малопонятным названием. Непонятно какая книга в файле, пока не
откроешь файл и не посмотришь его содержимое. Чтобы навести порядок со
скаченными книгами, можно переименовать файлы по автору и названию
книги. После этого можно искать книги просто запустив поиск по имени
файла.
2. Перемещать (сортировать) файлы по каталогам.
Программа определяет автора, название и серию книги из файла, формирует
имя каталога, если необходимо создает его, и перемещает файл в этот
каталог. Файл можно переместить нажав кнопку
"Переместить" или
F6. Имя каталога
формируется скриптом, который задается в настройках программы.
Синтаксис и функции скрипта описаны далее.
Назначение операции: можно хранить свою электронную библиотеку
переименовав файлы и рассортировав их по каталогам. В таком варианте
нет необходимости использовать специальную программу-библиотекарь.
3. Архивировать файлы в архив zip формата.
4. Перекодировать fb2
файлы из кодировки UTF-8 в WIN1251, что уменьшает размер файла примерно
на 40% (в zip архиве на 10-15%). Перекодировать файл можно
нажав кнопку "UTF8->WIN". Если в файле
встретится символ,
который отсутствует в кодировке WIN1251,
то программа не перекодирует файл.
Назначение операции: большинство книг не содержат никаких
экзотических символов и прекрасно могут храниться в кодировке WIN1251,
что дает уменьшение размера файла.
5. Переконвертировать файл из
fb2 в
txt. В настройках программы задается формат создаваемого текстового
файла. Переконвертировать файл можно нажав кнопку "FB2->TXT".
Назначение операции: после переконвертирования текстовый файл можно
открыть в Word-е и распечатать книгу на принтере и т.д.
6. Перекодировать текстовые файлы из кодировки DOS CP866 в WIN1251. Перекодировать файл можно нажав кнопку "DOS->WIN".
Параметры командной строки:
booki.exe -операция[операция...] файл [файл...]
Операция:
r - переименовать
m - переместить
z - архивировать
u - перекодировать fb2 файл из
UTF8 в WIN1251
t - переконвертировать fb2 файл
в текстовый файл
d - перекодировать текстовый
файл из DOS CP866 в WIN1251
В имени файла можно указывать символы-шаблоны '*' и '?'.
Пример: booki.exe -ru br12.fb2 c:\books\*.zip
Переименовать и перекодировать из UTF8 в WIN1251 файл br12.fb2 в
текущем каталоге, переименовать все поддерживаемые типы файлов в zip
архивах в каталоге c:\books, перекодировать из UTF8 в WIN1251 все fb2
файлы в zip архивах в каталоге c:\books.
Синтаксис
скрипта для определения имени файла и имени каталога:
Идентификатор переменной начинается с символа '$', может
содержать символы 'A'..'Z', 'a'..'z', '_', '0'..'9'. Переменные бывают
2-х типов: строковые, числовые целые со знаком. Переменные не
объявляются. Тип переменной определяется при первом присваивании её
значения - строкового или числового. После того как тип переменной
определен, ей нельзя присваивать значение другого типа.
Строковая константа представляет собой последовательность символов заключенных в апострофы или двойные кавычки. Чтобы в строковой константе указать апостроф, двойные кавычки или слэш перед ними ставиться символ '\'.
На вход скрипта подаются переменные:
$title - название книги (текстовая)
$authorno - кол-во авторов (числовая)
$seq - серия книги (текстовая)
$seqnum - номер в серии (текстовая)
$genreno - кол-во жанров (числовая)
$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' - отчество.
genre(i) - возвращает i-тый жанр книги. i должна быть от 1 до $genreno.
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) - возвращает строковое представление числа
Условный оператор:
if (условие) оператор присваивания
или
if (условие) {
...
}
Оператор цикла:
while (условие) {
...
}
Условие в операторах if и while:
операнд1 =|<>|>|<|>=|<= операнд2
Операнд может быть переменной, строковой и числовой константой. Типы операндов должны совпадать.
Для строковых операндов допускается только операторы сравнения = и <>.
Некоторые
аспекты работы
программы:
- программа позволяет
обрабатывать файлы в zip архивах только если в архиве один
файл и файл сжат методом deflate
- для текстовых файлов не
существует формата по которому указывается автор и название
книги. Обычно в
первой строке файла автор, во второй название книги или наоборот.
Программа подсчитывает кол-во попаданий слов из первых 2-х
строк в список
фамилий и имен авторов, который имеется в программе. В той строке, для
которой кол-во попаданий больше, находиться автор книги, в другой -
название.
- в кодировке WIN1251 символы представляется всегда одним байтом, в
кодировке UTF-8 символы представляется
от 1 до 4-х байт. Символы кирилицы в UTF-8 занимают 2 байта.
Теоретически при перекодировании из UTF-8 в WIN1251 размер файла должен
уменьшиться в 2 раза (на 50%), но из-за
того что в файле содержатся управляющие теги латинскими букавами,
которые занимают 1 байт, плюс картинка обложки книги, и в результате
файл уменьшается только на 40%. Цифры 40% и 10-15% для сжатых
файлов получены экспериментальным
путем.
Программа НЕЗАРЕГИСТРИРОВАНА. Через каждые несколько десятков операций будет выдаваться сообщение с предложением зарегистрировать программу. Зарегистрировав программу, Вы избавитесь от сообщения и поддержите дальнейшую разработку программы. Условия регистрации: Для регистрации программы необходимо: |
Написать разработчику booki@hotbox.ru