Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет rusec ([info]rusec)
@ 2007-07-23 16:28:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
FB2 => HTML

Взято c Либрусека. Комментарии приветствуются.

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

К моему удивлению, поиск в интернете ничего не дал. Единственный как-то работающий вариант прост

(system "xsltproc -o $HTML FB2_2_html.xsl $FB2"), но не обрабатывает картинки. А карты иногда бывают полезны. Ужас.

Пришлось писать свой конвертер.


Для начала зарылся в глубь FB2_2_html.xsl (это как-бы официальное описание fb2-html, как я понял). Такое ощущение, что xsl разрабатывался роботами для роботов. Живому человеку там делать нечего. Так меня не тошнило лет десять, со времен изучения win32api.

Маленький пример. Надо нам добавить разрыв строки, <br> на html, он же <empty-line /> на fb2 (чем им <br> не угодил? Ну, там много необъяснимых странностей.)

На перле это выглядит примерно так:



print '<br>' if /<empty-line/;



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

На xsl же:



<xsl:template match="fb:empty-line">

 <xsl:text disable-output-escaping="yes">&lt;br&gt;</xsl:text>

</xsl:template>


Как говорится, почуствуйте разницу - три строчки абракадабры вместо одной читабельной. Видимо, это слишком сложная для xsl операция - замена тэга.

Вывод - xsl для обработки xml абсолютно непригоден. Как, прости господи, фортран какой-нибудь. Вопрос. А зачем он вообще нужен-то?


В результате из 400 строк и 15 килобайт нечитаемого xsl получилось 200 строк перла, из которых половина - пустые, весом в 5 кило.


Теперь к делу.

Пока сделано так:

Аннотация выкидывается. Нечего ей делать внутри книжки, она нужна до чтения, для выбора книги, а не во время.

Оглавление располагается в конце книги. Идея расмещать оглавление в начале мне кажется порочной. В большинстве случаев оно не нужно, а если понадобилось - всегда можно нажать CtrlEnd.

Сноски опять же в конце. Кому понадобится - кликнет, кто и так понял - читает дальше. На то она и сноска, чтоб не отсвечивать.

Картинки вытаскиваются в отдельные файлы и в html проставляются абсолютные ссылки - даже если его утащить на локальный комп, картинки всё равно откроются.

Обложка вставляется в начало книги. Сильно сомневаюсь в её нужность, честно говоря.

Просьба ко всем - вдумчиво просмотреть что получается из сложносвёрстанных книг и об обнаруженных глюках доложиться.



(Читать комментарии) - (Добавить комментарий)


[info]rusec@lj
2007-07-23 22:38 (ссылка)
И тем не менее...я нахожусь в юрисдикции, которую вы видеть не хотите :)
Я где-то сказанул что-то против вашей юрисдикции? Извините.
Я и сам сервер в Штатах держу, потому как дешево и сердито.

Помощи при вычитке при таких обьемах оказать не могу
А в таких объемах и не надо. Достаточно будет наткнувшись на ошибку её исправить или о ней сообщить. За день библиотеку посещает 500 человек, не считая роботов. Если каждый исправит по одной ошибочке - они скоро кончатся. Вот, сегодня товарищ Miroff неплохо поработал - 70 книжек по местам расставил. А так уже человек десять включилось. Хорошо.

По поводу зеркал я еще не думал, как это реализовать.
Идея-то в том, чтобы множество пользователей приводило собрание в порядок.
Не только вычитка - исправления имен авторов, создание биографий, удаление дублей авторов и книг, перевод из менее правильных форматов в более правильные... Много чего.
Как всю эту радость синхронизировать - непонятно. Особенно сейчас, пока структура базы не устоялась.
Репликациями на уровне MySQL? Не знаю, насколько у него с этим хорошо, никогда не пробовал. Или переползать на взрослые BD, где с репликациями всё нормально? Не каждый хостер на это пойдет.
Думается, существующих ресурсов пока хватит. Оплаченный траффик я использую на 1% примерно, есть куда расти.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]shannar@lj
2007-11-02 21:48 (ссылка)
Как насчёт такого ресурса, как http://fantlab.ru/ ? Много грамотно сделанных библиотграфий и всё такое, правда, в основном фантастика, конечно же...

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]rusec@lj
2007-11-02 22:57 (ссылка)
Никак.
Хороший ресурс.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]shannar@lj
2007-11-02 23:03 (ссылка)
Постараюсь на днях "рекламу" там дать, чай, энтуазистов хватает!..

(Ответить) (Уровень выше)


(Читать комментарии) -