Я люблю читать Хабр (а также ЖЖ, roem.ru, новости рамблера и ещё много чего) на своей любимой электронной книге Nook и, изредка, на своём мобильном на андроиде. На читалке я читаю, чтобы не портить глаза, и не напрягаться лишний раз, сидя за компьютером, а на мобильном от безысходности стоя в какой-нибудь очереди.
Я сделал страницу readitlaterlist.com/unread (сервис из серии «прочту позже») домашней на моей читалке, поставил приложение на мой телефон, и удобно добавляю топики с Хабра (ЖЖ и прочих), которые хочу почитать на читалке, с помощью плагина для Firefox'а.
Казалось бы, всё замечательно, но вот беда: обычная версия Хабра грузится в браузере моего Нука больше минуты, притормаживает и из-за вёрстки под обычные экраны необходимо вручную центровать колонку с текстом. Впрочем, неудобства я испытывал с большинством полноразмерных страниц различных СМИ и блогов.
Я пробовал мигрировать на Instapaper, т.к. он поддерживает выгрузку в epub и mobi (можно даже слать себе на email, например, для автоподгрузки на Kindle), но и тут проблема: все сервисы при вытаскивании текста статьи с Хабра режут комментарии (Хабр без комментариев?!?!).
В конце-концов, я пришёл к тому, что перед отправкой в ReadItLater я вручную правил url поста на хабре, чтобы переключиться на мобильную версию этого поста (сейчас это лишь добавить m.
, а раньше приходилось удалять /<имя блога>/
, ставить posts
, а также добавлять m.
). А на сайтах СМИ я выискивал ссылки вида «версия для печати» или «версия для PDA».
В конце-концов, мне надоело делать эту обезьянью работу и моё терпения лопнуло. Я задумал писать плагин для firefox'а. В процессе поисков я наткнулся на плагин для vimperator'а (плагин для firefox'а, затачивающий его под управление с клавиатуры, о нём на хабре: раз, два): readitlater.js. Плагин содержит ошибку в одной команде и жуткие комментарии на японском, но если вооружиться google translat'ом и разобраться, то дело своё он делает.
К тому моменту я уже подсел на vimperator (всем очень советую!) и решил допиливать именно readitlater.js.
Сам плагин добавляет несколько команд:
ril a[dd]
— добавить текущую страницу в ReadItLater (илиril a url title
добавить произвольный url с произвольным заголовком)ril o[pen]
— открыть страницу из списка непрочтённых в ReadItLater (с перебором по TAB)ril r[ead] url
— удалить url из списка непрочтённых в ReadItLater (с перебором по TAB)- Есть ещё
ril get
(вытащить список прочтённых),ril stats
(посмотреть статистику)
Оказалось, что основным языков написания плагина являлся Javascript и код плагина достаточно ясен. В итоге я поработал над плагином и в дополнение к имеющимся командам я добавил команду ril m[add]
. Она работает как ril a
, но для ряда сайтов перед добавлением меняет url на url мобильной версии или версии для печати.
Кроме того, я поправил баг в ril get
и сделал так, что ril read
без url помечает прочтённой текущую страницу. Кроме того я добавил README и худо-бедно перевёл внутреннюю документацию с японского.
На данный момент плагин поддерживает следующие сайты:
- habrahabr.ru
- livejournal.com (в т.ч. темы дня)
- www.trud.ru
- lenta.ru
- roem.ru
- www.guardian.co.uk
- news.rambler.ru
И сейчас туда без особого труда можно добавить новые.
Уже 2 месяца пользуюсь плагином и не нарадуюсь :)
Установка очень проста:
- Ставим vimperator через менеджер дополнений Firefox
- Создаём папочку ~/.vimperator/plugin/ (или %HOME%vimperatorplugin, если вы используете Windows) и кладём в неё файл readitlater.js (при скачке выбираем ссылку RAW)
- Перегружаем firefox командой
:restart
- Наслаждаемся
Результаты моих трудов можно видеть здесь: github.com/petRUShka/readitlater.js
Если кому-то хочется добавить поддержку любимых сайтов, то сделать это можно следующим образом:
- форкнуть мой репозиторий
- Добавить пару строчек в функцию addItemByArgsWithSubstitution. Пример для habrahabr'а:
if(url.match(/://habrahabr.ru/)) args["url"] = url.replace("habrahabr.ru", "m.habrahabr.ru").replace(/.ru/.+/(d+)/, ".ru/post/$1").replace(/#habracut$/, "");
- Сделать pull request
Если кто-то заинтересован, в том, чтобы читать статьи не онлайн, а оффлайн, то можно воспользоваться скриптом миграции из ReadItLater в Instapaper. Например, можно делать так перед выгрузкой в epub. Кстати, Instapaper не режет комментарии в мобильной версии !! Так что можно смело выгружать.
В будущем ради это функциональности я планирую добавить в плагин поддержку Instapaper. За сим откланяюсь.
Автор: mpetrunin