Comments 59
А не могли бы вы добавить пример экспортированной статьи?
+1
Могу целиком выложить мой fb2 (~50мб. в несжатом виде).
0
Выложил в обновлении к статье.
0
Спасибо, сегодня гляну на читалке.
Из предложений: добавьте настройку чтобы можно было сохранять отдельную статью в отдельный файл.
Из предложений: добавьте настройку чтобы можно было сохранять отдельную статью в отдельный файл.
0
Скачал ваш файл, но открыть не могу — пишет о повреждении. Использую STDUViewer, другие файлы fb2 открывает мгновенно.
+1
Да, файл конвертируется не валидный, увы. Если отключить опцию «превращать тэг br в P», то файл станет более валидным, но читаемость упадёт в разы. Телефонные читалки мягче относятся к стандарту.
Если встретите какой-нибудь приличный метод гарантированно превратить HTML текст в FB2 (ну кроме как вычищать все тэги совсем )) ) — с удовольствием его реализую. Мне покуда не удалось :(
Если встретите какой-нибудь приличный метод гарантированно превратить HTML текст в FB2 (ну кроме как вычищать все тэги совсем )) ) — с удовольствием его реализую. Мне покуда не удалось :(
0
Простите, а тогда чем в принципе просматривать генерируемый вашим конвертером fb2?
+1
Просмотр на компьютере я не предполагал (хотя, опять же, см. пункт про второй режим генерации), а на телефоне под андроидом — CoolReader и [тут забытое мной название читалки, надо будет уточнить у девушки, чем она открывала] просматривает идеально.
0
Вместо
<br>
(хотя это xml, правильнее <br />
) попробуйте использовать <empty-line/>
.+1
Ёлки-палки, действительно, как я про этот тег забыл! Как доберусь до домашнего компьютера, попробую и сравню.
0
Вспомнил, в чем проблема. Не сработает.
Дело в том, что <empty-line/> нельзя применять внутри — формат станет невалидным. fb2 — формат с жесткой структурой.
Т.е, есть у нас например
И как тут красиво заменить BR? Нужно
Если выбирать первый вариант — нужная очень хитрая регулярка как минимум, либо столь же хитрый код. У меня пока нет столько свободного времени, готового решения не знаю, альтернативные в голову не пришли :(
У меня в конвертере можно переключаться между вторым и третьим вариантом.
Дело в том, что <empty-line/> нельзя применять внутри — формат станет невалидным. fb2 — формат с жесткой структурой.
Т.е, есть у нас например
<p>
<b>
[текст]
<br>
[текст]
</b>
</p>
И как тут красиво заменить BR? Нужно
- либо закрыть B, закрыть P, поставить emtpyline, открыть P, открыть B
- либо заменить BR на
</P><P>
— некорректно, но некоторая часть читалок переживет - совсем удалить BR и не вспоминать о нем.
Если выбирать первый вариант — нужная очень хитрая регулярка как минимум, либо столь же хитрый код. У меня пока нет столько свободного времени, готового решения не знаю, альтернативные в голову не пришли :(
У меня в конвертере можно переключаться между вторым и третьим вариантом.
0
Вот поэтому надо было использовать не php, а языки с богатыми библиотеками, которые использовать проще, чем регулярки :-)
ps интересная тема… На выходных гляну и постараюсь на java что-нибудь наваять… есть подозрение что и быстрее и не хуже будет работать :-)
ps интересная тема… На выходных гляну и постараюсь на java что-нибудь наваять… есть подозрение что и быстрее и не хуже будет работать :-)
0
В php тоже есть и библиотеки, и биндинги к библиотекам на других языках… но я пока не могу сформулировать задачу, которую нужно решить. Если точнее, формулировка то простая — «как очистить HTML, что бы он стал корректным XML (как выкинуть или корректно открыть-закрыть недостающие теги)». Уверен, что решение есть, но пока что не у меня.
0
Сильно подозреваю, что существуют различные dom-парсеры html, а из этого самого dom`а можно выдернуть всё что захочется ;-)
0
Написал тест и проверил в доступных мне редакторах и читалках,
Очень жаль… как будет свободное время, посмотрю ваш код, может что придумаю (тема заинтересовала).
Но четвертый вариант возможен: заменить BR на
<empty-line/>
вполне валидно вписывается в сам файл, но вот не все смогли переварить (точнее FBreader на всех платформах, и одна аппаратная книга).Очень жаль… как будет свободное время, посмотрю ваш код, может что придумаю (тема заинтересовала).
Но четвертый вариант возможен: заменить BR на
<empty-line/>
— корректно, но некоторая часть читалок не переживет.0
Спасибо, попробуем!
Мысль конвертации в epub поддерживаю.
Мысль конвертации в epub поддерживаю.
+1
Одного понять не могу, почему сам хабр не добавит корректный и столь желанный функционал.
+3
а много ли пользователей этого функционала будет?
0
Есть предложение, что непосредственно экспорт может и не так уж много кому нужен, но наличие какого-либо «habra-API» было бы очень кстати. Парсить было бы проще, например :)
Сейчас же API никакого нет, кроме, разве что, просмотра уровня кармы/рейтинга отдельного пользователя (может что упустил?).
Сейчас же API никакого нет, кроме, разве что, просмотра уровня кармы/рейтинга отдельного пользователя (может что упустил?).
+1
Я смотрю, народ часто просит API для своих приложений типа хабра-читалок, но что-то без успеха.
+1
Не трудно реализовать сервис-посредник с API, только вот
1) легальность (я в наших законах уже совсем не ориентируюсь)
2) мощность серверов может понадобиться нешуточная
3) нулевая монетизация (по моему скромному мнению)
4) если затея будет пользоваться успехом — чую, авторы хабра через некоторое время уже самостоятельно реализуют идею.
Хотя можно и попробовать на досуге.
1) легальность (я в наших законах уже совсем не ориентируюсь)
2) мощность серверов может понадобиться нешуточная
3) нулевая монетизация (по моему скромному мнению)
4) если затея будет пользоваться успехом — чую, авторы хабра через некоторое время уже самостоятельно реализуют идею.
Хотя можно и попробовать на досуге.
0
Я тут пытаюсь на локальном апаче прогнать скрипт, но ничего не выходит: браузер отображает пустую страницу. Файлик .fb2 так же не появляется.
Логов не предусмотрено? PHP 5.3.15.
Логов не предусмотрено? PHP 5.3.15.
0
Логов не предусмотрено, и видимо вечером я буду их прикручивать… Единственное, что приходит в голову
1) скачали сабмодули?
2) error.log сервера что нибудь говорит?
1) скачали сабмодули?
2) error.log сервера что нибудь говорит?
+1
1) Скачал
2) pastebin.com/AcxCb4ij — есть траблы в скрипте
2) pastebin.com/AcxCb4ij — есть траблы в скрипте
0
Любопытно.
«HP Notice: Undefined variable: step in /Users/silvansky/Projects/habr_to_fb2/index.php on line 3»
А объект «step» создается в файле config.php. Хмм… Буду думать, доберусь до дома, отвечу подробнее.
«HP Notice: Undefined variable: step in /Users/silvansky/Projects/habr_to_fb2/index.php on line 3»
А объект «step» создается в файле config.php. Хмм… Буду думать, доберусь до дома, отвечу подробнее.
0
А зачем парсить страницы полного Хабра, есть же мобильная версия, достаточно вместо habrahabr.ru обращаться к m.habrahabr.ru, там и мусора меньше в исходнике, да и комменты в упрощенном виде.
0
«Качаем, распаковываем в любой виртуальный хост, правим config.php под себя и открываем в браузере.»
Да вы что, шутите что ли? Откройте для себя php-cli — как раз для таких случаев.
Да вы что, шутите что ли? Откройте для себя php-cli — как раз для таких случаев.
+2
UFO just landed and posted this here
почему не в несколько потоков идет парсеринг? почему бы не использовать code.google.com/p/phpmulticurl/?
+1
Не подумал, не учел, не знал о таком готовом классе, но спасибо за совет — вполне возможно, переделаю. В свободное время. :)
+2
Кстати, тут упоминается, что
habrahabr.ru/post/170801/#comment_5928889
Так что создание параллельно работающей версии оставлю тем, кому это надо и у кого есть на это время… :)
habrahabr.ru/post/170801/#comment_5928889
когда я краулил хабр пол года назад — третий параллельный коннекшен ломал весь процесс загрузки. Как только хабр видит что с одного ip адреса кто-то делает больше 2-ух запросов — дропает все.
Так что создание параллельно работающей версии оставлю тем, кому это надо и у кого есть на это время… :)
0
Спасибо за наводку на этот класс и возможность. Добавил в скрипт возможность качать в несколько потоков, но только для картинок ;-)
0
Юзать short tags в проектах которые публикуются — не круто.
-1
Добавлена возможность сохранять комментарии! По-умолчанию выключена, и вот почему:
- (+) в статье комментарии могу быть не менее ценны, чем сам пост, а то ценнее
- (+) сильнее, чем уже есть верстку не ломает
- (-) не сохраняет картинки из комментариев
- (-) выводит комментарии линейно
- (-) увеличивает время конвертации и размер получающегося файла. Для сравнения — моё избранное без картинок и без комментариев весило 5-6 мб., с комментариями, но без картинок — под 50 мб. При таком количестве текста телефон еле ворочается, по несколько секунд перелистывая страницы...
0
php на дескопе, естесственно, у меня нет. что делать?
0
Поставить?
0
Обновление скрипта.
Теперь файл более корректен (с токи зрения XML). Правда, FBreader на всех платформах его не принимает, так же как и одна из аппаратных книг, но большинство читалок файл всё-таки одолеет. Заменен демонстрационный файл.
По совету в комментариях — добавил возможность включить скачивание картинок параллельно, в несколько потоков.
Теперь файл более корректен (с токи зрения XML). Правда, FBreader на всех платформах его не принимает, так же как и одна из аппаратных книг, но большинство читалок файл всё-таки одолеет. Заменен демонстрационный файл.
По совету в комментариях — добавил возможность включить скачивание картинок параллельно, в несколько потоков.
0
Не знаю в чем трабла но у меня постоянно стопорится на этом этапе «картинка номер 3 из 1867»
0
Самый простой способ отладить — запустить firebug и посмотреть в консоли, что отвечает при запросе 3й картинки (скачивании или записывании в файл?). По идее, некорректные или не скачавшиеся файлы должно просто отбрасываться. Плюс можете включить в конфиге логгирование.
Вечером посмотрю скачивание вашего избранного с домашнего компьютера, и потом отпишусь.
Вечером посмотрю скачивание вашего избранного с домашнего компьютера, и потом отпишусь.
0
Залейте кто-нибудь это на беспланый хостинк с php и перед генерацией спрашивайте ник пользователся, чтобы все могли пользоваться — цены вам не будет!
0
Sign up to leave a comment.
Экспорт избранного Хабра в FB2 — скоростная PHP-версия