html текст
All interests
  • All interests
  • Design
  • Food
  • Gadgets
  • Humor
  • News
  • Photo
  • Travel
  • Video
Click to see the next recommended page
Like it
Don't like
Add to Favorites

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

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

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

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

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


Пример файла (вторая версия). ~150 статей, размер 22мб., в сжатом виде 14 мб. Картинки в комплекте, комментарии — нет.

Update. Пример fb2-файла. 400+ статей, общий размер ~53мб., картинки сжаты до 400 пикселей, размер архив 33.8 мб. Выше — свежая версия файла.
Update 2. Для работы скрипта на сервере должны быть включены short tags. Не актуально для новой версии скрипта.
Update 3. Скриншот скрипта в процессе выполнения:

Update 4 (27.02.2013). Обновил скрипт. Теперь не выкидываются тэги <CODE> и <TABLE> (в последней не работает сложное форматирование, но тем не менее). Добавлено логгирование (включается в config.php). Короткие тэги заменены на длинные.
Update 5 (27.02.2013). Обновил скрипт. Теперь он поддерживает сохранение комментариев, подробности — чуть ниже, тут.
Update 6 (28.02.2013). Обновление скрипта. Теперь файл более корректен (с токи зрения XML). Правда, FBreader на всех платформах его не принимает, так же как и одна из аппаратных книг, но большинство читалок файл всё-таки одолеет. Заменен демонстрационный файл.
Update 7 (28.02.2013). Обновил скрипт. По совету в комментариях — добавил возможность включить скачивание картинок параллельно, в несколько потоков.
Читать дальше
Twitter
Одноклассники
Мой Мир

материал с habrahabr.ru

0

      Add

      You can create thematic collections and keep, for instance, all recipes in one place so you will never lose them.

      No images found
      Previous Next 0 / 0
      500
      • Advertisement
      • Animals
      • Architecture
      • Art
      • Auto
      • Aviation
      • Books
      • Cartoons
      • Celebrities
      • Children
      • Culture
      • Design
      • Economics
      • Education
      • Entertainment
      • Fashion
      • Fitness
      • Food
      • Gadgets
      • Games
      • Health
      • History
      • Hobby
      • Humor
      • Interior
      • Moto
      • Movies
      • Music
      • Nature
      • News
      • Photo
      • Pictures
      • Politics
      • Psychology
      • Science
      • Society
      • Sport
      • Technology
      • Travel
      • Video
      • Weapons
      • Web
      • Work
        Submit
        Valid formats are JPG, PNG, GIF.
        Not more than 5 Мb, please.
        30
        surfingbird.ru/site/
        RSS format guidelines
        500
        • Advertisement
        • Animals
        • Architecture
        • Art
        • Auto
        • Aviation
        • Books
        • Cartoons
        • Celebrities
        • Children
        • Culture
        • Design
        • Economics
        • Education
        • Entertainment
        • Fashion
        • Fitness
        • Food
        • Gadgets
        • Games
        • Health
        • History
        • Hobby
        • Humor
        • Interior
        • Moto
        • Movies
        • Music
        • Nature
        • News
        • Photo
        • Pictures
        • Politics
        • Psychology
        • Science
        • Society
        • Sport
        • Technology
        • Travel
        • Video
        • Weapons
        • Web
        • Work

          Submit

          Thank you! Wait for moderation.

          Тебе это не нравится?

          You can block the domain, tag, user or channel, and we'll stop recommend it to you. You can always unblock them in your settings.

          • habrahabr.ru
          • домен habrahabr.ru

          Get a link

          Спасибо, твоя жалоба принята.

          Log on to Surfingbird

          Recover
          Sign up

          or

          Welcome to Surfingbird.com!

          You'll find thousands of interesting pages, photos, and videos inside.
          Join!

          • Personal
            recommendations

          • Stash
            interesting and useful stuff

          • Anywhere,
            anytime

          Do we already know you? Login or restore the password.

          Close

          Add to collection

             

            Facebook

            Ваш профиль на рассмотрении, обновите страницу через несколько секунд

            Facebook

            К сожалению, вы не попадаете под условия акции