киндловарство

Потратил день, однако добился своего. С недавних пор ваш покорный слуга является обладателем киндла (самая дешевая из моделей — Kindle 4 тот что с кнопками и без тача). В принципе нареканий никаких. Самое приятное (из-за чего все остальные читалки остались за флагом) — обложка с подсветкой, причем с подсветкой, питающейся от аккумуляторов самого киндла. К этому прилагаются wifi, онлайновые сервисы и все дела. Не хватает двух вещей — первое русской клавиатуры, второе — не-проприетарных форматов для чтения, которые бы поддерживали ссылки внутри текста. Полагаю и первое и второе — дело времени (и коммьюнити).

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

Особенно удобно было пользоваться этой утилитой для конверсии Аффигительно Большого Текстового Файла — поскольку там собрано все интересное, необходимое и актуальное и к тому же разложено по полочкам. У меня под это дело был заточен скрипт, который в целом выглядел так:

#! /bin/bash

cd ~/tmp
cp ~/blog/main.txt .

iconv -t=cp1251 -c main.txt > main_cp.txt
makeztxt -r "^#.{,15}" -r "^@ 20..-..-.. @ ..:.." -l -t .main2010 -o main.pdb main_cp.txt
cp -f ~/tmp/main.pdb ~/desktop/palm/_main.pdb
rm ~/tmp/main.txt
rm ~/tmp/main.pdb
rm ~/tmp/main_cp.txt

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

Хорошая новость, которая выяснилась при переходе — это то, что Киндл «знает» про UTF8 и конвертить мои файлы в CP1251 не нужно. Плохая новость. Киндл поддерживает куцый список форматов: простой txt, pdf в разных инкарнациях, проприетарные .mobi и .azv. И еще .prc — он же AportisDOC.

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

Посылать файл для обработки на амазон — бессмысленно и беспощадно.

Нужна утилита, которая бы (а) работала быстро и не подвисала на больших объемах текста, (б) позволяла бы сконвертить текст во что-то читабельное. Поскольку на дворе XXI век, а софт и железо помощнее, чем они были во времена Sony Clie sj22 и тем более Palm Zire 21, я рассчитывал что что-то такое найдется. Не тут-то было.

Calibre отвалился сразу — причем по критерию (а) — он просто завис на простой (без расстановки закладок) конверсии и больше не подавал признаков жизни. Что gui, что коммандлайновая версия.

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

Была некая надежда на markdown-утилиты, но она тоже не оправдалась, поскольку не смотря на то, что структура документа простая, они перестрахоывают себя и тоже впадают в кому.

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

В конце-концов я нашел kindlegen — утилиту, которую поставляет Amazon. Тоже проприетарщина, понимает только epub и html на входе, однако (а) коммандлайновая (б) раз она понимает html — значит можно будет сгенерить содержание для файла.

Напрашивалась связка: АБТФ -> скрипт делающий из txt html -> kindlegen -> mobi-файл

html-файл я решил генерировать вручную, скриптом на Питоне — благодаря этому файл на шесть миллионов знаков конвертится в течении одной секунды (точнее — 0m1.087s — если верить time). Киндлген конвертит этот html в mobi в течении 2 минут 16 секунд (это чрезвычайно тяжелая работа — упаковать html в zip-архив).

Я шел к решению последовательными шагами.

Сначала написал прототип генерирующий файл через sed. Добавил вручную содержание (несколько пунктов) и посмотрел как с ним справляется kindlegen. Когда более или менее стало понятно, как должен выглядеть файл, который можно ему скормить, написал связку в которой теги расставлялись через sed, а содержание уже генерировалось питоном.

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

Убедившись, что все работает, навесил дополнительных фич. Сделал надмозг «сверхсодержание» — собрал ссылки верхнего уровня в отдельное содержание (видели в современных книгах? сначала идет общее содержание, а потом содержание с подразделами и прочими подробностями). Когда и это заработало, еще и сделал «живыми» ссылки в документе (не все, правда, в основном — те, что можно было сделать живыми навскидку). То есть теперь читая свои заметки я могу кликать по ссылкам и киндл откроет мне их в браузере.

Ну и в завершение — скрипт, конвертящий мои файлы и сбрасывающий их по ssh.

В целом остался доволен, однако разница во времени конверсии просто удручает. makeztxt выполнял всю ту же работу на связке из восьми Больших файлов за шесть секунд (0m5.915s). Над тем же набором файлов kindlegen думает семь минут (7m3.247s). XXI век, говорите?

Я все понимаю — что киндл, это читалка, которая должна читать книги. Что пользователю сейчас важны картинки, ссылки, оформление и css с pdf’ами. Но то, что софт с трудом вытягивает эти задачи при просто неизмеримой пропасти между железом прошлого века и железом века нынешнего — это позор. С другой стороны — спасибо, что есть. Но я все жду, когда наконец допилят CoolReader — и можно будет не использовать киндлген, а сразу бросать файлы на читалку, или вообще вернуться к старому доброму makeztxt.

Если кому-то интересно посмотреть на код — милости прошу на Битбакет:

https://bitbucket.org/tengucrow/ak/src

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

Любые идеи и замечания как всегда приветствуются.

Реклама

5 Responses to киндловарство

  1. Вот здесь описано как поставить Coolreader3 на K4NT
    http://www.the-ebook.org/forum/viewtopic.php?t=22649
    или тут http://nook.im/links/583
    И тогда нет проблем с любым форматом fb2, epub, rtf, doc
    для txt автоматические оглавления.
    CR3 — IMHO лучшая читалка

  2. Я читал :) А ты сам ставил? Как оно на Киндле? Насколько стабильно работает?

  3. Посмотрел топик на ебуке — прикольно там только-только появилась заметка про kite — вот это реально кульная вещь :)))

  4. У меня сейчас Nook Simple Touch. Там стоит Android 2.1 и после рутования легко ставится CoolReader и нормальная файловая книжная полка

  5. Агамс. Ну, в любом случае — у меня скрипт одинаково хорошо генерит «сырец» — безразлично под kindlegen или под ebook-генератор :) А на киндле CR сыроват вроде пока. Во всяком случае установка идет не без бубна и с риском забриковать систему.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: