Экспорт избранного Хабра в FB2 — скоростная PHP-версия

от автора

В своё время я уже видел такой конвертер здесь же на Хабре, написанный на питоне, но он на моей машинке сжирал много-много-много ресурсов и ни разу не смог моё избранное (а это 400+ постов) до конца сохранить, падая то на некорректном файле, то на «кривой» статье. Пришлось переписать, результаты трудов под катом.

  • Уже было, причем дважды (в fb2, на питоне)!
    • PDF на телефоне требует больше ресурсов для просмотра.
    • питоновский скрипт сохранения в fb2 съедал у меня около 3 Гб оперативной памяти (а на старом ноутбуке ровно 3 и было), и ни разу не смог успешно завершить процесс успешно.

  • Комментарии к постам сохраняются?
    В библиотеку парсера соответствующую функцию я добавил, но сохранение в файл не сделал. Если будут идеи, как красиво отобразить комментарии ограниченными возможностями fb2-разметки — поделитесь идеей, с удовольствием доделаю следующим патчем.
  • Валидация, работоспособность файла, известные проблемы?
    В CoolReader под android открывается 100%, windows-версия FBReader может падать на некоторых статьях.
    Не всё корректно отображается — тэги таблицы удаляются, код не оборачивается в соответствующий тэг (будет в следующем патче).
    Все некорретные статьи или картинки молча отбрасываются, никакого логгирования ошибок.
  • Как запустить?
    Качаем, распаковываем в любой виртуальный хост, правим config.php под себя и открываем в браузере.
    Все нужные библиотеки или в комплекте, или докачиваются сабмодулями.
  • Где взять то?
    На github’е, вестимо.
  • Настройки?
    В файле config.php, всё подписано русским utf’ом. Можно, например, отключить сохранение картинок или сменить папки для сохранения данных.
  • Что интересного в реализации?
    • парсинг ведётся силами библиотеки phpquery
    • все действия разнесены в отдельные файлы (скачивание списка, скачивание статьи, сохранение картинки)
    • за один шаг выполняется одно атомарное действие (скачивание одной статьи, скачивание одного вложенного файла и т.п.). Таким образом памяти каждый скрипт ест мало, а работает относительно быстро.

  • Я нашел ошибку/баг/кривой код/у меня есть идея!
    Делитесь здесь, в личку, на github’е — в свободное время могу заняться.

ссылка на оригинал статьи http://habrahabr.ru/post/170755/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *