Это rss читалка в виде браузерного расширения (js-приложение), которое позволяет в дальнейшем читать rss-потоки вообще без наличия интернета, даже картинки заранее скачиваются. А теперь подробнее.
Скриншот, как это выглядит:
В недалёком 2012 году, когда GR ушёл, я стал думать, как же мне дальше читать новости. Просмотрел кучу разных читалок. Среди них были очень достойные, которыми можно пользоваться, но у них было много разных минусов - то нужно платить, то нет нужных функций, и т.д.
Как front-end developer, я решил написать на js приложение, которое бы работало локально, подключаясь к браузеру. Это удобно в первую очередь тем, что, например, проблема авторизации уходит на второй план. Есть rss-потоки, которые работают, только если вы авторизованы на сайте. Например, тот же живой журнал. В данном случае все подзамочные записи (записи для друзей) будут отлично приходить в читалку.
Во-вторых, это удобно тем, что браузер представляет собой как-бы платформу, основу, в которой есть много готового. Доступ к базе данных sqlite, загрузка файлов, иконка приложения.
Интерфейс я честно подглядел у гуглридер, немного его доработал.
В те годы я создал похожий проект для чтения форумов. Ядро было написано на php, но мне это показалось уже устаревшим и плохоразвиваемым, я сделал ставку на javascript. И я взял оформление с этого проекта, добавил ядро на js и встроил в расширение. И вот что получилось.
Сейчас это расширение представляе собой бету-версию, с малым количеством багов и работоспособную, я ей пользуюсь для чтения RSS, поэтому когда она стала стабильной, решил поделиться с общественностью. Можете пользоваться, поставив как расширение (через папку в developer mode). Я не гарантирую супер-волшебства дизайна при работе этого расширения, но оно работает, это я могу сказать точно.
Работают клавиши J, K, V, M
J - следующая запись.
K - предыдущая.
V - открыть ссылку в новой вкладке.
M - пометить как непрочитанной.
Добавить поток можно тремя способами
1. Указать точный адрес потока.
2. Указать просто url-страницы. Вам будет показан список найденных там потоков и вы можете, оставив нужные галки, подписаться.
3. Импортировать OPML-файл. Импорт работает по очереди, поэтому запаситесь терпением.
Тех детали
Поддерживаются потоки разных типов - rss, atom, rdf.
Поддерживается почти всё, что есть внутри - вложения, geo, категории, комментарии, автор и т.д.
Вложения будут показаны в списке справа, и если это картинка, то показана как картинка:
Если такая картинка уже есть в тексте статьи, то будет просто название, чтобы не дублироваться: Видео и аудио - покажется плеер.
Есть список подписок и можно отписаться. Есть быстрый поиск.
Все картинки в статьях грузятся в базу и отображаются потом при просмотре. Сделано это хитро,картинка грузится из базы только если она появляется в зоне просмотра. Далее, если она уходит из зоны просмотра, она выгружается. Этим наверняка будет экономиться память.
В дальнейшем картинка кешируется на неделю, и если больше не нужна, удаляется из базы автоматом.
Папки предусмотрены в архитектуре, но пока не реализован интерфейс при добавлении потока, в какую папку добавлять.
На текущий момент сделана только основа, многое не сделано, но планирую по мере сил и возможностей это добавлять.
Исходный код выложен на github - https://github.com/Qavai/readRss
По сути, интерес представляет библиотека rss-парсера. Её я создавал сам с нуля, потому что готовой нет, особенно с теми возможностями, которые я туда добавил.
Применяется sanitize для очистки html от всего лишнего, что там не нужно для чтения.
Конечно, мой говнокод мало будет кому интересен, но если и будете использовать, то пишите ссылку на меня, чтобы было понятно, кого бить =)
Планы
Планов много.
Хотя и реализован минимальный алгоритм по подсчёту времени дальнейшей загрузки потока, но он очень грубый и глупый. В планах есть его сделать умным, чтобы тратилось меньше трафика на проверку.
Хотя и сейчас уже применяется кеширование и выдача заголовков, так что по большей части идёт ответ 304.
На первом этапе была цель оперативно поставлять информацию, без задержек.
В планах, конечно же, добавить много интерфейсных удобных штучек - удалить поток, перенести в другую папку и т.п.