Kindle Collection Generator

Назначение программы

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

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

Програма обладает рядом достоинств, которые иногда являются недостатками:

Вот пара скриншотов моих коллекций. Старая версия, по авторам, тегам, сериям. И более новая версия по авторам+коллекциям:
 

Совместимость

Программа проверена для Kindle 3 WiFi под Debian Linux и Windows 7, версия python 2.6.6

Быстрый старт

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

Для работы программы Вам необходим интерпретатор Python версии 2.6.6. С другими версиями не проверялось, но возможно будет работать.

Порядок работы:

Конфигурация kindle-coll-gen

Предопределённые схемы

Вместе с программой идут несколько предустановленных схем коллекций:

Особое форматирование достигается использованием программы Calibre. Настройка описана
тут

Общие настройки

Общие настройки хранятся в главном конфигурационном файле, который должен называеться так-же как и утилита, но с расширением .conf. Например:
[general]
kindle_mount_point_Linux=/media/Kindle/
kindle_mount_point_Windows=F:\
book_storages=documents
book_extensions=pdf;mobi;prc;txt;tpz;azw
verbose = 1
pinned_hashes=*e5bf751aa86b6fea49a055d463e97e12d3175182;*9e97434880f115813437c1910b6dba7398c12e52
#orphans_coll=$rest
profile=author-series
Описание опций:

Создание схемы(профиля)

Каждый файл находящийся на устройстве проходит определённую процедуру, которая назначает этому файлу коллекции(т.е. файл будет включен во все "назначенные" коллекции). Имена коллекций извекаются из пути к файлу, и при этом путь претерпевает некоторые изменения. Эти изменения никак не отражаются на истинном местоположении файла!

Настройка Calibre

Программа изначально создавалась для работы совместно с Calibre.

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

Итак, необходимо снять опцию "конвертировать не английские символы в латинские эквиваленты" и задать следующий шаблон для генерации:

a={author_sort}/t={tags}/s={series}/si={series_index}_{title}
или
a={author_sort}/t={tags}/s={series}
если не предполагается использовать построение индексов серий.

a=, t=, s= и si= служат для облегчения обработки путей регулярными выражениями, и в общем случае могут быть заменены на что угодно. Затем берём пачку интересующих книг и экспортируем в директорию documents/calibre. Можно и сразу в documents, но я предпочитаю отделить автоматически сгенерированную структуру от залитых вручную файлов. Не забудьте, что формат файлов должен быть mobi! При сохранении на диск автоматическа конверсия не производится, сделайте её в ручную и сохраните только mobi.

Теперь сгенерированная структура будет выглядеть как-то так

documents/calibre/a=Борис Акунин
documents/calibre/a=Борис Акунин/t=det_history
documents/calibre/a=Борис Акунин/t=det_history/s=Провинциальный детектив
documents/calibre/a=Борис Акунин/t=det_history/s=Провинциальный детектив/si=1_Pielaghiia1.mobi
documents/calibre/a=Борис Акунин/t=det_history/s=Провинциальный детектив/si=2_Pielaghiia2.mobi
documents/calibre/a=Борис Акунин/t=det_history/s=Приключения магистра
documents/calibre/a=Борис Акунин/t=det_history/s=Приключения магистра/si=2_F. M_.mobi
documents/calibre/a=Борис Акунин/t=det_history/s=Приключения магистра/si=3_Vnieklassnoie chtieniie.mobi
documents/calibre/a=Борис Акунин/t=det_hard
documents/calibre/a=Борис Акунин/t=det_hard/s=
documents/calibre/a=Борис Акунин/t=det_hard/s=/Kviest.mobi
documents/calibre/a=Борис Акунин/t=sf_horror, sci_history
documents/calibre/a=Борис Акунин/t=sf_horror, sci_history/s=
documents/calibre/a=Борис Акунин/t=sf_horror, sci_history/s=/Kladbishchienskiie istorii.mobi

Другие возможности

Очистка

Программа позволяет произвести "чистку" - удалить все файлы, которые не имеют соответствующей книги. Calibre копирует вместе с книгой ряд файлов: .opf, .jpg:
Skazki.mobi
Skazki.opf
Skazki.jpg
После прочтения книгу можно удалить прямо из Kindle, но дополнительные файлы остаются. Это можно поправить запустив программу с параметром --clean:
kindle-coll-gen.py --clean
программа найдёт все файлы, имеющие не книжное расширение(из конфиг файла) и не имеющее в этой же директории книги с таким-же именем. Список будет выведен и пользователю будет предложено удалить их или оставить. Затем программа ищет все пустые директории и так-же предлагает их удалить.

Индексы серий

Утилита позоволяет построить индексы в сериях книг. Например есть у нас 10 книг Гарри Гаррисона "Стальная Крыса". Конечно читать их стоит в порядке написания, но как узнать порядок их следования в серии? Тут мождет помочь Calibre + kindle-coll-gen. С помощью Calibre нужно сгенерировать пути файлов, с указанием порядкового номера в серии. Для этого нужно что бы книги уже были пронумерованы в Calibre (например я скачиваю серии с flibusta.net, там они пронумерованы) и задать шаблон для вывода файлов a={authors}/t={tags}/s={series}/si={series_index}_{title}

Затем запускаем

kindle-coll-gen.py --build-index
и в директории documents появляется новая директория _series-index содержащая текстовые файлы, с перечислением книг по порядку.

После построения индекса нужно снова перестроить коллекции, что бы индексы попали в соответствующие коллекции. За построение индексов отвечает файл series_index.conf, который по умолчанию находится только в профиле author-series.

Выглядит это так:
 

Опции командной строки

Запустите kindle-coll-gen.py --help для просмотра доступных опций
./kindle-coll-gen.py --help
Usage: kindle-coll-gen.py [options]

Options:
  -h, --help            show this help message and exit
  -m MOUNT_POINT, --mount-point=MOUNT_POINT
                        Specify point where kindle mounted. Typically
                        /media/Kindle on linux, and one of drive letters on
                        windows (F:\)
  -v, --verbose         Show extra output
  -s, --silent          Be quiet, not bother user with extra information
  -i CONFIG_PATH, --config=CONFIG_PATH
                        Override config location
  -d, --dry-run         Simulate
  -r, --reindent        Reindent current collections.json file.
  -z, --skip-old        Forget about old collections. Build from scratch.
  -e ENCODING, --encoding=ENCODING
                        Use specified output encoding instead default. utf-8
                        for example
  -p PROFILE_DIR, --profile=PROFILE_DIR
                        Profile for use (directory path with files split.conf,
                        coll.conf)
  -o ORPHANS_COLL, --orphans-coll=ORPHANS_COLL
                        Collection for orphan elements
  -y, --yes             Answer "yes" to all asks
  -c, --clean           Clean library
  --warnings-as-errors  Threat warnings as errors
  --build-index         Build index for books in series
TODO: подробное описание

Kindle Collection Generator (с) Azarkevich Sergey 2010