You are viewing [info]rusec's journal

Previous Entry | 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 проставляются абсолютные ссылки - даже если его утащить на локальный комп, картинки всё равно откроются.
Обложка вставляется в начало книги. Сильно сомневаюсь в её нужность, честно говоря.
Просьба ко всем - вдумчиво просмотреть что получается из сложносвёрстанных книг и об обнаруженных глюках доложиться.

Comments

( 23 comments — Leave a comment )
[info]observarius wrote:
Jul. 24th, 2007 12:54 am (UTC)
Записки постороннего - вы делаете хорошее дело. Помочь не могу, но умом с вами...
[info]rusec wrote:
Jul. 24th, 2007 01:02 am (UTC)
Спасибо на добром слове. Это тоже - помощь.
[info]observarius wrote:
Jul. 24th, 2007 01:08 am (UTC)
И тем не менее...я нахожусь в юрисдикции, которую вы видеть не хотите :)
Помощи при вычитке при таких обьемах оказать не могу.

Если сделаете бэкап, я был бы счастлив сделать зеркало, пправда... но США :(
[info]rusec wrote:
Jul. 24th, 2007 01:38 am (UTC)
И тем не менее...я нахожусь в юрисдикции, которую вы видеть не хотите :)
Я где-то сказанул что-то против вашей юрисдикции? Извините.
Я и сам сервер в Штатах держу, потому как дешево и сердито.

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

По поводу зеркал я еще не думал, как это реализовать.
Идея-то в том, чтобы множество пользователей приводило собрание в порядок.
Не только вычитка - исправления имен авторов, создание биографий, удаление дублей авторов и книг, перевод из менее правильных форматов в более правильные... Много чего.
Как всю эту радость синхронизировать - непонятно. Особенно сейчас, пока структура базы не устоялась.
Репликациями на уровне MySQL? Не знаю, насколько у него с этим хорошо, никогда не пробовал. Или переползать на взрослые BD, где с репликациями всё нормально? Не каждый хостер на это пойдет.
Думается, существующих ресурсов пока хватит. Оплаченный траффик я использую на 1% примерно, есть куда расти.
[info]shannar wrote:
Nov. 3rd, 2007 12:48 am (UTC)
Как насчёт такого ресурса, как http://fantlab.ru/ ? Много грамотно сделанных библиотграфий и всё такое, правда, в основном фантастика, конечно же...
[info]rusec wrote:
Nov. 3rd, 2007 01:57 am (UTC)
Никак.
Хороший ресурс.
[info]shannar wrote:
Nov. 3rd, 2007 02:03 am (UTC)
Постараюсь на днях "рекламу" там дать, чай, энтуазистов хватает!..
[info]alexx40in wrote:
Jul. 24th, 2007 03:14 am (UTC)
Насчет аннотаций ты зря
Лично мне они нужны. К примеру, накачал я в прошлом месяце книг, перебираю что почитать уже у себя на компе...
По поводу обложек тоже не сомневайся - лично мне книжки без них не нужны ;)
[info]rusec wrote:
Jul. 24th, 2007 03:23 am (UTC)
Re: Насчет аннотаций ты зря
Ну так ты же качаешь fb2.zip наверное? Там аннотации остаются.
Речь про конвертер для онлайн чтения. Там - не нужны имхо.
[info]alexx40in wrote:
Jul. 24th, 2007 03:33 am (UTC)
Re: Насчет аннотаций ты зря
Мне все равно кажется, что аннотации и обложки не помешают. Да и в онлайне всю книгу не почитаешь... Впрочем, я ни разу и не пробовал :)
Но обложки нужны :)
[info]rusec wrote:
Jul. 24th, 2007 03:43 am (UTC)
Re: Насчет аннотаций ты зря
Для оффлайна - fb2. И куча читалок, поверь, поудобнее броузера.
Для онлайна - html. В основном для мелких книжонок, цитат и поисковиков.
Ну и для тех, кому лень разбираться с fb2.

Но обложки нужны :)
Зачем?
[info]alexx40in wrote:
Jul. 24th, 2007 04:54 am (UTC)
Re: Насчет аннотаций ты зря
"Зачем?"
Сложно объяснить :) С 97-го года читаю с компа, с 2002 - на Палм. И только месяц назад купил РРС и появилась возможность читать с обложками. А все это время их очень не хватало. Имхо, обложка - это важная часть книги, она задает насрой. Если качественная, конечно. Взять хотя бы обложки Бондаря к Перумову. Да и, как я уже говорил, книжка ассоциируется с обложкой... В общем, довольно сложно объснить то, что просто нравится и все тут.
В любом случае, когда в читалке есть фозможность показывать стили текста, жирный/курсив, аннотации и обложки, это хорошо. Лично мне читать гораздо прятней
(Anonymous) wrote:
Feb. 15th, 2010 11:39 am (UTC)
Re: Насчет аннотаций ты зря
Во всякой книге предисловие есть первая и вместе с тем последняя вещь; оно или служит объяснением цели сочинения, или оправданием и ответом на критики. Но обыкновенно читателям дела нет до нравственной цели и до журнальных нападок, и потому они не читают предисловий. А жаль, что это так, особенно у нас.
М.Ю.Лермрнтов "Герой нашего времени". Предисловие
[info]evil_harconen wrote:
Jul. 24th, 2007 04:36 am (UTC)
обложки - нужны
Обложки нужны обязательно. Не для украшения (хотя, чего скрывать, текст одна картинка все-таки немного разбавляет), а для более успешного запоминания автора и названия. Многие люди (и я в том числе) запоминают автора и названия в основном с обложки. Ибо на ПДАшнике полное название в заголовке окна нечитаемо, да и читаю я в полноэкранном режие. Посмотреть на обложку - практически единственный шанс не применяя специальных усилий запомнить название книги.
[info]rusec wrote:
Jul. 24th, 2007 05:19 am (UTC)
Re: обложки - нужны
Уговорили, пусть будут.
[info]zhuk_s wrote:
Jul. 24th, 2007 06:31 am (UTC)
Такое ощущение, что xsl разрабатывался роботами для роботов. Живому человеку там делать нечего

Так и есть, собственно. Предполагалось, что вручную xsl не просматривается, зато то что он форматирует xml, сам являясь xml-ем это как бы бонус. Т.е. работа с данными и с оформлением единым образом, программно причем. Именно, что для роботов и человеку там делать нечего. Правда, получилась все равно фигня :)
[info]gatoazul wrote:
Aug. 17th, 2007 07:40 am (UTC)
XSLT (а не XSL), похоже, разрабатывался сексуальными меньшинствами. Таких извращений я нигде больше не видел - что семантика, что синтаксис.
Примерно для тех же задач есть язык XQuery, который выглядит намного приятнее.
[info]rusec wrote:
Aug. 17th, 2007 12:11 pm (UTC)
Глянул.
Действительно, намного приятнее, хотя до перла и не дотягивает.
Но, к сожалению, разработчики стандарта fb2 о нём не знают. И это очень печально.
(Anonymous) wrote:
Jan. 22nd, 2010 12:01 am (UTC)
исходник скрипта
А такой наглый вопрос. Мозчно ли как то полуцчить исходник этого конвертера? нико0д@гмаил.ком
заранее спасибо за любой ответ
[info]rusec wrote:
Dec. 22nd, 2010 08:10 am (UTC)
Re: исходник скрипта
(Anonymous) wrote:
Aug. 18th, 2010 04:32 pm (UTC)
Исходник
Добрый день, занимался подобной проблемой на пхп - получился скрипт который обрабатывал процентов 70 книг - остальные парсились криво. Очень хотелось бы посмотреть ваш код на перле. driverok собака гмайл.ком
(Anonymous) wrote:
Dec. 22nd, 2010 07:00 am (UTC)
"..Просьба ко всем - вдумчиво просмотреть что получается из сложносвёрстанных книг и об обнаруженных глюках доложиться.."

Каким образом можно "просмотреть что получается из сложносвёрстанных книг" и "..об обнаруженных глюках доложиться..,
если не выложен скрипт озвученный в теме ?
[info]rusec wrote:
Dec. 22nd, 2010 08:07 am (UTC)
1. Найти сложносвёрстанную книгу на Либрусеке или залить её туда.
2. Нажать /read (читать)
3. Посмотреть, что получилось.
( 23 comments — Leave a comment )