Это rss читалка в виде браузерного расширения (js-приложение), которое позволяет в дальнейшем читать rss-потоки вообще без наличия интернета, даже картинки заранее скачиваются. А теперь подробнее.

Скриншот, как это выглядит:

image

В недалёком 2012 году, когда GR ушёл, я стал думать, как же мне дальше читать новости. Просмотрел кучу разных читалок. Среди них были очень достойные, которыми можно пользоваться, но у них было много разных минусов - то нужно платить, то нет нужных функций, и т.д.

Как front-end developer, я решил написать на js приложение, которое бы работало локально, подключаясь к браузеру. Это удобно в первую очередь тем, что, например, проблема авторизации уходит на второй план. Есть rss-потоки, которые работают, только если вы авторизованы на сайте. Например, тот же живой журнал. В данном случае все подзамочные записи (записи для друзей) будут отлично приходить в читалку.

Во-вторых, это удобно тем, что браузер представляет собой как-бы платформу, основу, в которой есть много готового. Доступ к базе данных sqlite, загрузка файлов, иконка приложения.

Интерфейс я честно подглядел у гуглридер, немного его доработал.

В те годы я создал похожий проект для чтения форумов. Ядро было написано на php, но мне это показалось уже устаревшим и плохоразвиваемым, я сделал ставку на javascript. И я взял оформление с этого проекта, добавил ядро на js и встроил в расширение. И вот что получилось.

Сейчас это расширение представляе собой бету-версию, с малым количеством багов и работоспособную, я ей пользуюсь для чтения RSS, поэтому когда она стала стабильной, решил поделиться с общественностью. Можете пользоваться, поставив как расширение (через папку в developer mode). Я не гарантирую супер-волшебства дизайна при работе этого расширения, но оно работает, это я могу сказать точно.


 

Работают клавиши J, K, V, M

 


J - следующая запись.
K - предыдущая.
V - открыть ссылку в новой вкладке.
M - пометить как непрочитанной.

 

 

 

Добавить поток можно тремя способами



image


1. Указать точный адрес потока.
2. Указать просто url-страницы. Вам будет показан список найденных там потоков и вы можете, оставив нужные галки, подписаться.
3. Импортировать OPML-файл. Импорт работает по очереди, поэтому запаситесь терпением.

 

 

 

Тех детали



Поддерживаются потоки разных типов - rss, atom, rdf.
Поддерживается почти всё, что есть внутри - вложения, geo, категории, комментарии, автор и т.д.

Вложения будут показаны в списке справа, и если это картинка, то показана как картинка:

image

Если такая картинка уже есть в тексте статьи, то будет просто название, чтобы не дублироваться:

image Видео и аудио - покажется плеер.

Есть список подписок и можно отписаться. Есть быстрый поиск.

image

Все картинки в статьях грузятся в базу и отображаются потом при просмотре. Сделано это хитро,картинка грузится из базы только если она появляется в зоне просмотра. Далее, если она уходит из зоны просмотра, она выгружается. Этим наверняка будет экономиться память.

В дальнейшем картинка кешируется на неделю, и если больше не нужна, удаляется из базы автоматом.

Папки предусмотрены в архитектуре, но пока не реализован интерфейс при добавлении потока, в какую папку добавлять.

На текущий момент сделана только основа, многое не сделано, но планирую по мере сил и возможностей это добавлять.

Исходный код выложен на github - https://github.com/Qavai/readRss

По сути, интерес представляет библиотека rss-парсера. Её я создавал сам с нуля, потому что готовой нет, особенно с теми возможностями, которые я туда добавил.

Применяется sanitize для очистки html от всего лишнего, что там не нужно для чтения.

Конечно, мой говнокод мало будет кому интересен, но если и будете использовать, то пишите ссылку на меня, чтобы было понятно, кого бить =)

 

 

 

Планы



Планов много.

Хотя и реализован минимальный алгоритм по подсчёту времени дальнейшей загрузки потока, но он очень грубый и глупый. В планах есть его сделать умным, чтобы тратилось меньше трафика на проверку.

Хотя и сейчас уже применяется кеширование и выдача заголовков, так что по большей части идёт ответ 304.

На первом этапе была цель оперативно поставлять информацию, без задержек.

В планах, конечно же, добавить много интерфейсных удобных штучек - удалить поток, перенести в другую папку и т.п.

Спасибо.

ps. Я сейчас свободен и очень ищу работу. Мне бы хотелось заниматься javascript и front-end, живу в Нижнем Новгороде, моё резюме.