nataraj: (Default)
[personal profile] nataraj
Есть замечательный perl-скрипт html2fb2 писаный неким товарищем Mike Matsnev

Скрипт этот открывает файл, если имя задано, или берет STDOUT, скармливает открытый файл-хэндл HTML::Parser'у и дальше делает что надо.

Все бы хорошо, но возникает одна проблема... HTML::Parser не умеет правильно раскрывать амперсант-последовательности для случая когда его кормят уникодом не сказав что это уникод... (то есть когда в строке уникод но не выставлен флаг UTF8.) Но если открывать уникодный html-файл без доп ухищерений, то именно такие данные из него и приходят.

При этом скрипт сам, на момент открытия файла не всегда знает какая кодировка там будет, потому что в если ничего не сказано явно, то он по возможности берет кодировку из META в заголовке...

Эта мета ловиться парсером, но на момент когда она ловится, файл уже открыт... И из этого открытого файла уже сыпятся уникодная разнобайтица...

Проблема бы легко решалась бы, если бы контент файла загружался целиком, и можно было бы регекспить и преобразовывать его по самое неболуйся...

Но скрипт изначально задуман как фильтр (или какое там правильное слово... короче они не накапливает информацию, а по мере чтения выплевывает вывод, не дожидаясь пока все прочитается), и у нас есть ровно один шанс чтобы сделать все правильно... (Второй раз на STDIN никто ничего посылать не будет)

Вот... Короче я не понимаю как это сделать идеологически правильно не переиначивая всю идею скрипта... :-/

Есть кто-то кто может сказать что-то умное по этому поводу?

Date: 2008-01-14 08:14 pm (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
HTML::Parser-у совершенно необязательно скармливать хэндл. Можно и строку.
Т.е. зачитать файл или STDIN в строку самому, поанализировать на предмет meta и потом отдавать парсеру.
HTML-файлы книг они МАЛЕНЬКИЕ. Нет никакой необходимости читать их по кускам, даже если снаружи это выглядит как фильтр.

Date: 2008-01-14 08:18 pm (UTC)
ext_613079: Default userpic (Default)
From: [identity profile] shaplov.livejournal.com
Да, я понимаю... Я наверное так и сделаю...

Но к этой задаче у меня еще и чисто академический интерес... Она таки не имеет нормального решения?

Date: 2008-01-14 08:16 pm (UTC)
From: [identity profile] beldmit.livejournal.com
Коля, а ты не в курсе - как fb2 переконвертить в pdb?

Date: 2008-01-14 08:27 pm (UTC)
ext_613079: Default userpic (Default)
From: [identity profile] shaplov.livejournal.com
Я не знаю...
Либо написать, либо конвертировать fb2 во что-то что можно потом конвертировать в pdb...

Вроде бы cpan говорит о http://search.cpan.org/~bdfoy/p5-Palm-1.009/lib/PDB.pm

Но мне это писать совершенно незачем...

Date: 2008-01-15 09:04 am (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Посмотри на www.fictionbook.org - вроде был там конвертер.

Profile

nataraj: (Default)
Swami Dhyan Nataraj

July 2024

S M T W T F S
 123456
789 10111213
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 6th, 2025 12:35 pm
Powered by Dreamwidth Studios
OSZAR »