Решил довести идею с perl до практического применения
Итак, для более-менее работащего набора модулей пришлось распаковать, кроме perl-base, perl и perl-modules. С симлинками решил не морочиться, директорию 5.10.1 переименовал в 5.10 - оказалось этого достаточно.
Какое этому есть практическое применение? Например, как организовать поддержку mht? Есть скрипт unmht (http://www.volkerschatz.com/unix/uware/unmht.html). Для него нужны модули из liburi-perl, libhtml-parser-perl, libhtml-tagset-perl.
Чтобы файлы mht видела библиотека, добавим строчку
Как видно, mht преобразовывается в html и открывается броузером. (Если в 4.0 броузер не умеет открывать локально сохраненные файлы - ). fbreader почему-то открывать не захотел.
Все, кроме extensions.cfg, здесь: http://files.mail.ru/ANBGSI _________________ Кто хочет действовать, тот ищет возможности, кто не хочет — ищет причины.
Какие права устанавливаются на временную папку, может не хватает прав? На 602-м ни чем не удалось открыть, как будто приложения не видят временную папку. _________________ PB 360° (v.15.3) | PB Pro 602 Grey (v.2.2.1a fastdrv) | PB A7 (v.1.3.1583) - подарок от PocketBook.
который может транслировать doc, и вроде odt, в mht, может пригодится)
Я перебрал коллекцию своих mht на Покете и выяснил, что coolreader спотыкается, если основной текст "завернут" в Quoted-Printable (Mozilla unmht) или Base64 (Opera, Internet Explorer), т.е. если скажем основной текст в обычной UTF-8, то страничка вполне читаема кулридером безо всяких фокусов сразу.
Таким образом, можно сделать более простой perl-скрипт, который раскодирует лишь нужные куски и потом передаст его кулридеру.
Впрочем, сам я думал как раз о полной распаковке на составляющие файлы (и возможной переделке относительных ссылок). Надо погонять этот unmht...
Таким образом, можно сделать более простой perl-скрипт, который раскодирует лишь нужные куски и потом передаст его кулридеру.
Это было бы полезно, у меня почти все mht сохранены плагином из под мозилы, и кулридер добросовестно показывает этот Quoted-Printable. _________________ PB 360° (v.15.3) | PB Pro 602 Grey (v.2.2.1a fastdrv) | PB A7 (v.1.3.1583) - подарок от PocketBook.
Черновую тупейшую версию perl-скрипта сделал. Работает пока только на Desktop'e (Linux, Windows) и приводит к виду, читаемому coolreader'ом. С Покетовской версией поколдую, как запущу Perl на Покете и если вариант от pal'а не понравится.
Есть пока глюк -- должен бы для всех mht-файлов работать, но тестовый файл, сделанный с помощью Mozilla (unmht), Internet Explorer ( 8 ) и Opera (12) ведет себя по разному: от Internet Explorer открывается идеально, от Mozilla -- открывается, но кроме нужной информации показывает много разного мусора (не мешает особо так как лишь немного в начале и много в конце, но слишком много страниц выходит, в 3 раза больше чем в Internet Explorer). А вот от Opera -- не запускается пока не могу понять почему...
Вот код, состряпанный на скорую руку (зависимость только от стандартного пакета MIME) (под спойлером):
Какие права устанавливаются на временную папку, может не хватает прав? На 602-м ни чем не удалось открыть, как будто приложения не видят временную папку.
На 602-м нет программки openbook. Я пробовал размещать временную папку и на /mnt/ext1 - не помогло; значит права ни при чем. _________________ Кто хочет действовать, тот ищет возможности, кто не хочет — ищет причины.
Я запускал напрямую, т.е. оставлял только путь к программе.
pal wrote:
Я пробовал размещать временную папку и на /mnt/ext1 - не помогло; значит права ни при чем.
А я кажется понял, передается не имя файла с путем, а только путь /tmp/unmht/html/, вот потому браузер запускается, а другие программы нет. Т.е. ошибка где-то тут:
Нет. Таким образом мы извлекаем из mht имя html-файла. Дальше это имя дописывается к имени временного каталога. Открывать мы пытаемся таки файл с полным путем. _________________ Кто хочет действовать, тот ищет возможности, кто не хочет — ищет причины.
pal Чем сохраняли mht? Я сохраняю их FF дополнением UnMHT. _________________ PB 360° (v.15.3) | PB Pro 602 Grey (v.2.2.1a fastdrv) | PB A7 (v.1.3.1583) - подарок от PocketBook.
Проведя дальнейшие опыты с кулридером -- выяснил, что его поддержка mht на Покете довольно мизерна (на Декстопе вроде нормальная была...) и сводится только к отображению основной html-части, все остальные части, вроде файлов css, js, gif, png ,jpg -- игнорятся.
Поэтому с одной стороны мой энтузиазм поугас, с другой -- все же неплохо разобрался с mht, формат очень простой.
По поводу кулридера и "легкой поддержки" поэтому думаю, что если хочется простого пути, то надо "на лету" выдрать html часть и декодировать ее -- т.е. сохранить базовый html во временной директории и дальше по методу pal'a читать чем хочется.
"Выдиральщик" я на основе прошлого своего скрипта написал. Работает в силу своей простоты на ура, пока на декстопе. Дальше ставим Perl на Pocket и пришиваем как pal прописал, думаю вполне сойдет для большинства случаев. Весь код ниже под спойлером:
mht2htm :
Code:
#!/usr/bin/perl
# подгружаем пакеты для декодирования use MIME::Base64; use MIME::QuotedPrint;
#$mhtfile = "test.mht"; $mhtfile = shift; # читаем имя нужного файла из аргумента
$boundary=''; # тут будет метка границы между частями $flagmainfile =0; # флаг, что мы нашли основную часть (не факт, но обычно она первая) $flagemptyline = 0; # флаг, что мы нашли пустую строку перед телом файла основной части (отсюда будем декодить) $flagready = 0; # флаг, что мы закончили основную часть (уст, так как дальнейшие части не обрабатываем) $method = ''; # тут храним тип метода кодирования
open(MHT, $mhtfile) || die "Can't open $mhtfile: $!"; # читаем mht файл open(HTM, '>'.$mhtfile.'.htm') || die "Can't write to htm: $!"; # открываем на запись htm файл
- исправление 2. считается, что заголовки секций однострочные _________________ Кто хочет действовать, тот ищет возможности, кто не хочет — ищет причины.
Может и так, но нужно ведь что бы скрипт справлялся с любыми файлами, иначе нет в нем особого смысла.
transient wrote:
выяснил, что его поддержка mht на Покете довольно мизерна
В кулридере вообще не заявлена поддержка mht, так что он и не должен их открывать. Скорее всего кулридер с mht обрабатывает как обычный html, при этом конечно же картинки не будут видны и то же самое со стилями. _________________ PB 360° (v.15.3) | PB Pro 602 Grey (v.2.2.1a fastdrv) | PB A7 (v.1.3.1583) - подарок от PocketBook.
Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0000_01CDEC6B.104203B0" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157
1. еще один косяк у Вас остался, вот смотрите, как делает Mozilla Unmht (да и строк три):
видите, там еще может быть точка с запятой! Я это вчера прошел...
Мне показалось так будет лучше:
Code:
if ($line =~ /boundary\=\"?([^";]+)\"?\;?$/) { $boundary = $1}
все границы одинаковы, в общем все равно где ее поймать...
Antuan
Я почему решил начать с кулридера -- на Десктопе под Убунтой, помнится (сейчас давно уже нету его) он вполне корректно открывал mht-файлы. Я проверил на Покете -- частично работает. Как именно -- я уже для себя почти все выяснил и выше написал.
Таким образом, с моей точки зрения -- выдираем основной файл (ну может быть, можно еще прикрутить css, если они в основном файле будут отсутствовать) и смотрим штатным fbreader'ом -- разумеется на лету и прозрачно для юзера (как расписал pal). Для большинства ситуаций вполне хватит. Для полной поддержки -- все более-менее уже pal выписал.
У меня на 602-м похоже не работает перл. Стянул заведомо нормальный D-Link.mht и поменял путь, что бы распаковывало на карту - пусто. Нужен какой нибудь простенький скрипт на перл, что бы проверить. _________________ PB 360° (v.15.3) | PB Pro 602 Grey (v.2.2.1a fastdrv) | PB A7 (v.1.3.1583) - подарок от PocketBook.
Да, для начала просто запустить можно: ./perl.app -v должен сказать свою версию
Code:
/mnt/ext1/usr/bin/perl -v
В ответ выдается:
Code:
This is perl, v5.10.1 (*) built for arm-linux-gnueabi-thread-multi (with 59 registered patches, see perl -V for more detail) ...... и т.д.
Вроде как работает, но чего-то видать не хватает. _________________ PB 360° (v.15.3) | PB Pro 602 Grey (v.2.2.1a fastdrv) | PB A7 (v.1.3.1583) - подарок от PocketBook.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum