readRss — local rss reader as browser extension

Це читалка 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

По суті, інтерес представляє бібліотека rss-парсера. Її я створював з нуля, бо готової немає, особливо з тими можливостями, які я додав туди.

Застосовується sanitize для очищення html від усього зайвого, що там не потрібно для читання.

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

Плани
Планів багато. Хоча і реалізований мінімальний алгоритм підрахунку часу подальшої завантаження потоку, але він дуже грубий і дурний. В планах є зробити його розумним, щоб витрачалося менше трафіку на перевірку. Хоча і зараз вже застосовується кешування та видача заголовків, так що здебільшого йде відповідь 304. На першому етапі була мета оперативно постачати інформацію, без затримок.

У планах, звичайно ж, додати багато інтерфейсних зручних штучок — видалити потік, перенести в іншу папку і т. п.

Спасибі.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.