- PVSM.RU - https://www.pvsm.ru -

Читаем хабр, xkcd и rss на kindle

Читаем хабр, xkcd и rss на kindleС появлением электронной книги захотелось каждый день получать на неё пачку новостей, чтобы прочитать их по дороге на работу. Казалось бы, инструменты уже есть: бери и пользуйся. Но, как всегда, трудности в деталях:

  • Статьи надо посылать по расписанию
  • Надо посылать только новые статьи
  • Для разных сайтов нужны разные настройки
  • Картинки бывают не только в jpeg
  • Для xkcd надо уметь рендерить latex
  • На хабре статей много, а отсылать на книгу надо только избранные

Существующие решения

Send to kindle [1] и Push to kindle [2]

Достоинства: простота. Одним нажатием ставится дополнение к браузеру. Вторым нажатием отправляем страницу на читалку.
Недостатки: простота. Ну нельзя этим утилитам объяснить, что комментарии тоже интересно почитать и их надо включать в статью. Также нет периодического сбора статей.

Calibre [3]

Достоинства: мощный конфигурируемый открытый инструмент. Можно заставить его делать именно то, что нужно.
Недостатки: чтобы он делал именно то, что нужно, требуется доработка рашпилем. Об этом и статья.

Требования

  1. Раз в день надо собирать накопившиеся статьи и отправлять на читалку.
  2. Во многих rss лентах записей не много, поэтому вариант с отдельной книгой на каждую ленту не рассматривался. Тем более, что в kindle обнаружилась удобное двухуровневое оглавление.
  3. Современные читалки поддерживают не только jpeg. Черно-белые png комиксы не надо пережимать, особенно не надо прозрачный фон заменять на черный: прямоугольники — это концептуально и стильно, но не совсем то, что я хочу рассматривать каждое утро.
  4. Нужна возможность отмечать статьи, которые я хочу прочитать на книжке. Их и только их надо переносить.
  5. Статьи желательно скачивать непосредственно перед отправкой, чтобы к ним накопилось побольше комментариев.
  6. Latex формулы надо рендерить в png, а не рисовать с помощью JavaScript

Решение

Конвертация

Для скачивания и конвертации статей используется command-line версия calibre [3]. Нужно использовать версию не менее 0.8.51, так как она поддерживает опцию --mobi-keep-original-images. К сожалению, конвертация в mobi, это не единственное место где картинки принудительно сохраняются в jpeg. Нужно отучить RecursiveFetcher, загружающий ленты новостей, от этой вредной привычки. Другая проблема заключается в том, что единицей конфигурации в calibre является книга целиком. Мне же надо было иметь разные настройки конвертации для разных лент. Это решается созданием новой сущности FeedFetchSettings и написанием специального MultiFeedRecipe, конфигурируемого этими настройками. Все эти модификации можно найти на гитхабе [4]. Также MultiFeedRecipe умеет запоминать, какие статьи он уже загружал, и при следующем запуске он их пропускает.

latex

Я люблю читать What If [5], но для отрисовки формул автор использует JavaScript библиотеку, которая, естественно, в читалке не работает. Поэтому вместо неё я использую утилиту texvc из пакета mediawiki-math-texvc, генерирующую html для простых формул и картинки для сложных. Поэтому, чтобы работал экпорт What If нужно установить эту библиотеку.

Статьи с хабра

Выкачиванеи всего хабрахабра на читалку — это не то, что бы я хотел. Мне нужно откладывать отдельные длинные статьи, чтобы потом, когда будет настроение, их прочитать. Для этого я установил на свой хостинг [6] простейший скрипт, отдающий rss ленту по GET запросу и добавляющий в неё ссылки по POST запросу. Количество выдаваемых результатов ограничено, старые записи выкидываются. Авторизации никакой нет, но и адрес скрипта я не скажу. Желающие могут установить его у себя, предварительно переименовав. К серверному скрипту прилагается greasemonkey [7] userscript, работающий в firefox и opera и добавляющий к постам кнопку 2kindle:
            Читаем хабр, xkcd и rss на kindle
При нажатии на неё пост добавляется в ленту и с утра, перед тем, как я выйду из дома, calibre по крону загрузит статьи на устройство.

Доставка на читалку

В calibre есть утилита calibre-smtp, которую я и использую для того, чтобы отправить готовые книги на адрес kindle. А amazon, получив это письмо, отправляет файл по WiFi на читалку.

Настройка

Берете example.recipe [8], копируете в укромное место. Настраиваете ограничения на количество и возраст статей, а также путь до файла, в котором сохранять список загруженных статей. В свойстве feed_settings перечисляются настройки для каждого из источников статей. Можно указывать лишние настройки. А в свойстве feeds перечисляются названия источников и адреса лент в том порядке, в котором они должны быть в оглавлении.
В зависимости от ваших предпочтений можно либо настроить периодическую генерацию книг в calibre, либо делать это из командной строки:
ebook-convert example.recipe news.mobi --no-inline-toc --mobi-keep-original-images --output-profile=kindle

Нереализованные хотелки

Конечно скрипт не универсален и его можно расширять. Так, по аналогии с хабром, хочется иметь возможность отправлять посты из ЖЖ, произвольные страницы или выделенные фрагменты. Но я не уверен, что мне это настолько нужно, чтобы начать это делать.

Автор: kibergus

Источник [9]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/e-lektronny-e-knigi/33016

Ссылки в тексте:

[1] Send to kindle: http://www.amazon.com/gp/sendtokindle

[2] Push to kindle: http://fivefilters.org/kindle-it/

[3] Calibre: http://calibre-ebook.com/

[4] можно найти на гитхабе: https://github.com/kibergus/calibre

[5] What If: http://what-if.xkcd.com

[6] хостинг: https://www.reg.ru/?rlink=reflink-717

[7] greasemonkey: https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/

[8] example.recipe: https://github.com/kibergus/calibre/blob/master/example.recipe

[9] Источник: http://habrahabr.ru/post/177879/