Как удобно читать Хабр (и не только) на электронной книге или на мобильном



    Я люблю читать Хабр (а также ЖЖ, 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.

    Сам плагин добавляет несколько команд:
    1. ril a[dd] — добавить текущую страницу в ReadItLater (или ril a url title добавить произвольный url с произвольным заголовком)
    2. ril o[pen] — открыть страницу из списка непрочтённых в ReadItLater (с перебором по TAB)
    3. ril r[ead] url — удалить url из списка непрочтённых в ReadItLater (с перебором по TAB)
    4. Есть ещё ril get (вытащить список прочтённых), ril stats (посмотреть статистику)


    Оказалось, что основным языков написания плагина являлся Javascript и код плагина достаточно ясен. В итоге я поработал над плагином и в дополнение к имеющимся командам я добавил команду ril m[add]. Она работает как ril a, но для ряда сайтов перед добавлением меняет url на url мобильной версии или версии для печати.

    Кроме того, я поправил баг в ril get и сделал так, что ril read без url помечает прочтённой текущую страницу. Кроме того я добавил README и худо-бедно перевёл внутреннюю документацию с японского.

    На данный момент плагин поддерживает следующие сайты:

    1. habrahabr.ru
    2. livejournal.com (в т.ч. темы дня)
    3. www.trud.ru
    4. lenta.ru
    5. roem.ru
    6. www.guardian.co.uk
    7. news.rambler.ru


    И сейчас туда без особого труда можно добавить новые.

    Уже 2 месяца пользуюсь плагином и не нарадуюсь :)

    Установка очень проста:
    1. Ставим vimperator через менеджер дополнений Firefox
    2. Создаём папочку ~/.vimperator/plugin/ (или %HOME%\vimperator\plugin, если вы используете Windows) и кладём в неё файл readitlater.js (при скачке выбираем ссылку RAW)
    3. Перегружаем firefox командой :restart
    4. Наслаждаемся


    Результаты моих трудов можно видеть здесь: github.com/petRUShka/readitlater.js

    Если кому-то хочется добавить поддержку любимых сайтов, то сделать это можно следующим образом:
    1. форкнуть мой репозиторий
    2. Добавить пару строчек в функцию addItemByArgsWithSubstitution. Пример для habrahabr'а:
      	if(url.match(/:\/\/habrahabr\.ru/))
      	  args["url"] = url.replace("habrahabr.ru", "m.habrahabr.ru").replace(/\.ru\/.+\/(\d+)/, ".ru/post/$1").replace(/#habracut$/, "");
      	
    3. Сделать pull request


    Если кто-то заинтересован, в том, чтобы читать статьи не онлайн, а оффлайн, то можно воспользоваться скриптом миграции из ReadItLater в Instapaper. Например, можно делать так перед выгрузкой в epub. Кстати, Instapaper не режет комментарии в мобильной версии Хабра!! Так что можно смело выгружать.

    В будущем ради это функциональности я планирую добавить в плагин поддержку Instapaper. За сим откланяюсь.
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 30

      0
      Спасибо за статью. Пару месяцев назад очень бы пригодилась, сейчас же nook валяется дома с треснутым экраном.
        0
        Сочувствую. У меня, кстати, тоже треснул. Пришлось обменивать у родственников на другую модель. :)

        Кстати, насколько я понимаю, проблема-то общая для всех читалок: слабый процессор, низкое (по десктопным меркам) разрешение. Так что купите новую — пригодится :)

          0
          У меня не треснул, я сам с ним навернулся. Поскольку использовал только для чтения epub'ов, мощности хватало для всего.
        0
        Как-то много букв. У меня, видимо, все намного проще. Зашел на хабр, выбрал статью, выделил нужный текст (можно не выделять — отправится вся статья), нажал на кнопочку — через 5 секунд статья на моем kindle.
          0
          Выглядит все это так www.youtube.com/watch?v=qlErTbOsyz0
            0
            Прикольно, конечно. Но, к сожалению, как я видел, комментарии режутся.

            Кстати, что за плагин?
              0
              Расширение Send to Kindle.
              Кстати, если пушить статьи из мобильной версии хабра, комментарии не режутся.
            0
            а комментарии?

            Потом, почему много букв?

            :ril m — это всё, что нужно набрать.
              0
              Можно поподробнее? Куда нажать, чтобы статья была на kindle?
            0
            В мобильной версии хабра, вроде нет комментарий (или я сейчас как то криво вставил m.)?
              +1
              Не знаю, у меня с комментариями:

                0
                Действительно, сейчас дома попробовал — есть.
              0
              Спасибо. Идея использовать мобильную версию как источник для Instapaper мне почему-то в голову не приходила. А на обычной версии файрфокс ещё и виснет зачастую при попытке отправить статью на Instapaper, не говоря уж о порезанных комментах. Кстати, Instapaper зачастую неправильно рендерил epub (часть статей не открывались на нуке), приходилось качать с него mobi и конвертировать через calibre.
                +1
                Хм.
                А приложение RIL на Nook нельзя установить?
                +2
                Если касаться только Хабра, то скрипт HabrAjax совместно со стилями ZenComment имеет всё, чтобы сузить обычные страницы Хабра до ширины от примерно 300 пикс и более. Правая колонка убирается вниз или отключается, а к странице применяются стили, делающие текст несколько компактнее. В рзультате, выходит примерно такое:


                Тут есть куда расти (или уменьшаться) — не проверяется ширина левого поля, не уплотняется межстрочный интервал, не сокращается высота двойного переноса строки, что было бы полезно для чтения на малых устройствах.
                • UFO just landed and posted this here
                    0
                    Не знаете, что делать? Рисунок дизайна — обсуждение — предложение. Пока не было ни одного, значит, всех устраивает.
                  0
                  mpetrunin: а по сути вашей работы, вы на Nook-e пользуетесь Firefox-ом? И он медленно работает с сайтом Хабра? Или Вы его используете где-то на другом компьютере (по контексту можно видеть, что на мобильном телефоне), чтобы подготовить страницы для Нука? Видно, что работа проделана интересная, но будет ли полезен плагин для чего-то иного, чем чтение с читалки?
                    0
                    Нет, конечно :)

                    Мозиллой я на десктопе просматривая хабр (и другие ресурсы), отбираю интересный для меня материал. Раньше, чтобы добавить страницу в нужном мне виде (мобильная\печатная версии, максимально облегчённая) я как обезьянка делал миллион кликов и ещё URL руками менял. Сейчас всё это делается одной простой командой.

                    Браузер Нука (и почти любой другой читалки) будет подтормаживать на подобных полноразмерных страницах. Переход к мобильной версии позволяет этого избежать.
                    0
                    теперь ещё надо чтобы по ссылке из ePUB можно было открыть браузер для написания каментов
                      0
                      Если кто-то заинтересован, в том, чтобы читать статьи не онлайн, а оффлайн, то можно воспользоваться скриптом миграции из ReadItLater в Instapaper.

                      Если кто-то вдруг читает статьи на андроид, то приложение ReadItLater для него умеет скачивать статьи для чтения в оффлайн. И полноценные страницы не тормозят. Хотя оно вроде умеет автоматом и мобильные версии страниц скачивать.

                      Еще что интересно — у них есть режим Article View, где для некоторых западных сайтов они умеют вырезать ненужное. С хабром не работает :).
                        0
                        Для собственных нужд в свое время написал маленький букмарклет — по клику текущая страница хабра открывается в мобильном варианте.

                        javascript:(function(){var%20re=/\/habrahabr/i;var%20h=document.location.href;if(re.test(h)){re=/\/\d+/;var%20r=re.exec(h);var%20nh=h.replace(/habrahabr/i,%22m.habrahabr%22);nh=nh.replace(/\.ru\/.*$/,%22.ru/post%22+r+%22/%22);document.location=nh;}})();
                        0
                        Если хочется просто следить за тем, какие статьи добавляются на Хабрахабр (чтобы потом спокойно прочитать нужные), можно использовать связку Jabber-клиент + tweet.im. Заголовки новых статей будут приходить в виде сообщений от бота.
                          0
                          Я обычно calibre использую для таких целей.
                          Плюс она еще и с instapaper умеет собирать статьи.
                            0
                            Блин, а я писал-писал Google Reader клиент для первого нука с оффлайн синхронизацией, а потом понял что это никому не нужно, в том числе и мне. Так и забил. Хотя он готов на 90%. Там ряд багов осталось пофиксить…

                            Only users with full accounts can post comments. Log in, please.