Программа чтения RSS

English version - Английская версия
 Содержание 

Содержание


Введение

Современный интернет является очень динамичным и абсолютно необъятным источником информации. У многих пользователей сети есть свои собственные списки любимых сайтов на которых они привыкли почитывать, что же новенького происходит вокруг. Но некоторые новости нам заведомо неинтересны, что-то дублируется, а открыв одновременно десятки сайтов мы неэффективно нагружаем как сам компьютер, так и канал связи. Кто-то подумает, что выхода нет, но он есть! Хитрые хакеры придумали всеобъемлющее решение, и оно называется RSS.

Что такое RSS

RSS - аббревиатура английского термина "Rich Site Summary", то есть "насыщенная сводка сайта". Дабы не уподобляться современным школьникам, не стану копировать статью из Википедии - почитайте её, при желании, самостоятельно. ;-)

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

Обычно ссылку на RSS-поток можно легко найти на домашней странице почти каждого сайта - просто поищите иконку вроде или или

Как выглядят RSS статьи

Фактически каждый сайт, который мы собираемся мониторить генерирует так называемый "поток". Поток - это список последних статей (также называемых "сообщения", "новости", "обновления") опубликованных на искомом сайте.
Статья имеет собственный заголовок, текстовое содержание (иногда сопровождаемое иллюстрациями и/или видео) и ссылку на оригинальную публикацию.
Некоторые сайты снабжают статьи так называемыми "категориями" - набором текстовых "тегов", характеризующих соответствующую новость.

Вот пример RSS-статьи, отображенной в FreeRSS:
 
 
    Масиане снова сделали это  | Ассошиэйтед Стресс |   МежпланетныеНовости 12 часов назад

 Категории: марсиане последние новости снова сделали это

Марсиане заполучили тысячи новых клонов для будущих вторжений. Наш представитель в Планетарной Оборонной Комиссии сообщает о 17000 укрываемых существ, созданных злобными умами в подпольных лабораториях.
Это действие нарушает Хартию Освобождения Марса за номером #92017322/B и несколько местных законов.
Мы будем держать вас в курсе развития событий.
Опубликовать в Фейсбук
Опубликовать в google_plus
Опубликовать в Твиттере
 
 

Внешне эти статьи напоминают е-мейл: заголовки (как и "тема письма") отображаются однострочной ссылкой в списке сообщений, а содержание может быть открыто и прочитано по желанию. В роли "отправителя" тут выступает не человек, а сайт-источник (показан на картинке со ссылкой в виде иконки []).

Категории перечислены внутри текста статьи - прямо перед содержанием [].

В правом-верхнем углу видна иконка "меню статьи" [] открывающая окно поиска заголовка в выбранных поисковых системах.

FreeRSS автоматически снабжает каждую статью иконками "Перепост" для Фейсбука [], Гугл+ [] и Твиттера [].

О программе

Ради чего всё затевалось и что получилось

В марте 2013-го Гугл решил закрыть проект "Google Reader" и прекратить его поддержку начиная с 1 июля 2013. Множество коммерческих и бесплатных программ перестали работать, так как сбор RSS-новостей был основан на этом централизованном сервисе. Тогда я решил написать свою собственную программу чтения RSS с встроенным обновлением статей, а также другими функциями, которых мне так нехватало в готовых программах: автоматическая группировка и фильтрация статей, работа через браузер и т.п.

Получившаяся программа совместима с форматом хранения коллекций подписок "OPML" (используемым Google Reader и другими коммерческими/бесплатными программами).

Пока что отсутствует поддержка аутентификации пользователя, то есть каждым установленным экземпляром программы может пользоваться только один человек.

Пожалуйста имейте ввиду, что эта разработка - весьма чернового качества, так как моей целью было получение "быстрой замены Google Reader". Тем не менее, замечания/предложения/обнаруженные баги - всё это всегда приветствуется.

Технические детали

Серверная часть написана на Перле, при помощи POE и SQLite.

Единственным инструментом разработчика, использованным при написании, был VIM. Иными словами, это практически "100% ручная работа".

Продукт разрабатывался на MS Виндовс-машине (Win-7), но может работать на любой платформе которая поддерживает Перл: Виндовс, Линукс, Юникс.

Клиентская операционная система и совместимость с браузером проверялись на MS Win (XP и 7), Линукс (RH5), Андроид (сотовый телефон - версия 2.3.6, таблет - 4.2.1) и на всех популярных браузерах, включая даже Смарт-ТВ (LG). Рекомендуемый для лучшего качества просмотра браузер - Гугл Хром. Последние проверки показали очень плохую совместимость с InternetExplorer - кто им пользуется, тот сам себе враг.

Для техподдержки, сообщений об ошибках и советов по улучшению, пожалуйста свяжитесь с автором (см. контактную информацию на его домашней странице).

Перевод на другие языки

В настоящее время (помимо английского языка) имеется поддержка русского языка, однако это не предел, ибо встроенный в веб-сервер механизм интернационализации позволяет быстро добавить любой язык с написанием слева-направо (поддержка RTL не предусмотрена).

Для загрузки новой языковой поддержки на веб-сервер, понадобится указать соответствующий *.xml файл в пункте "International settings" из меню "Viewing options". Файл поддержки русского языка поставляется с программой - см. директорию data/xml в папке установки.

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

Автор

Free RSS Reader - это свободный продукт с открытым кодом, который разработал Феликс Либерман

Благодарности

Хотелось бы поблагодарить всех моих знакомых, участвоваших в предварительном тестировании программы.
Особая благодарность - моему другу (в реальной жизни и в ЖЖ)
quinn_mellory - твои замечания по поводу работы процесса эксплуатации программы помогли ей стать более простой и понятной.

Установка

Требования

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

Организовав доступ программы к интерпретатору Перл вы можете запустить её как сервер, доступный для любого устройства в локальной сети: Виндовс/Линукс/МакОС/Андроид (через любой dhtml-совместимый браузер).

Для пользователей Windows имеется скомпилированная версия, которая может работать на любой современной персоналке с MS Win

Версия, ссылки и исходники

Последняя официально выпущенная версия - 1.05b ("Perl is over - beta").

Все исходные коды открыты - вы можете использовать и совершенствовать их (пожалуйста, не забудьте упомянуть источник в документации)
Для скачивания последней версии используйте эту ссылку >> Версия с установщиком доступна здесь>>

Распаковка архива

Архив может быть распакован в любой директории при наличии разумного свободного пространства на диске. Используйте любой имеющийся архиватор поддерживающий tar+gz или rar (для Юникс или Виндовс соответственно)

Использование

Запуск программы

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

Если Вы желаете только поиграться с этой программой на платформе Виндовс - запустите файл "free_rss.bat".

На платформе Линукс/Юникс запустите шелл-скрипт "free_rss.csh".

Сама программа является простым консольным приложением не предназначенным для прямого общения с пользователем.

Чтобы использовать графическую часть программы на том же компьютере, просто откройте эту ссылку: 127.0.0.1:5001. Аналогичный интерфейс может быть получен на другом устройстве (в той же подсети), просто напишите в адресной строке браузера имя/ip основного компьютера с номером порта, например http://homepc:5001 или http://192.168.1.104:5001

Важное замечание: для получения полнофункционального интерфейса рекомендуется занести этот адрес в "белый список" блокировщика рекламы вашего браузера. Я не прокручиваю никакой рекламы, просто некоторые внутренние элементы FreeRSS смахивают на адреса типичных рекламных баннеров. Верьте мне, я - инженер ;-)

Импорт/экспорт файла OPML

Файл OPML содержит данные ваших подписок. Если Вы пользовались Google Reader - просто следуйте их инструкциям по переходу на другую систему - в результате получится файл OPML. Импорт OPML является одноразовым действием, без возможности повтора (так как все имеющиеся подписки удаляются, уступая место новым). В главном экране кликните на кнопку "settings" и в разделе "Administration" выбрав OPML file кликните на "Take subscriptions from OPML-file".

Для резервного копирования предусмотрен экспорт имеющихся подписок в файл OPML - перейдя на тот же экран, что и для импорта, используйте кнопку "Export subscriptions to OPML file". Файл будет сохранён на в поддиректории "data" под именем "user.opml" (предыдущая версия переименовывается в *.bak).

Просмотр новостей

Завершив настройку программы вы можете перейти на страницу "Чтения RSS".

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

Учтите, что одна и та же статья числится как в исходном потоке своего сайта, так и в тематической группе, а также в той или иной "подборке" - во всех случаях вы оперируете одной и той же статьёй, поэтому отметив её как "прочитанную" вы не сможете увидеть её, например в подборке "непрочитанное".

Для удобства любителей клавиатурных действий имеется широкий набор "быстрых клавиш" которые могут быть использованы вместо кнопок на экране:
Сочетание клавишДействие
Ctrl+ZПометить всю текущую страницу как прочитанную и перейти к следующей
Ctrl+MПометить текущуий RSS/группу/подборку как прочитанную
Alt+SПерейти к экрану настроек
Alt+CУдалить старые (прочитанные) статьи
Alt+RПолучить (скачать новые) RSS-статьи для всех выбранных источников
Стрелка внизПерейти к следующей статье на странице
Стрелка вверхПерейти к предыдущей статье на странице
Стрелка вправоПоказать содержимое статьи (когда отображается только её заголовок)
Стрелка влевоСпрятать содержимое статьи (если оно уже отображено)
Ctrl+Стрелка внизОтметить текущую статью как прочитанную и перейти к следующей этой на странице

"Быстрые клавиши" можно перенастроить, однако постарайтесь чтобы они не совпали с настройками вашего браузера и/или рабочего стола системы.

Обслуживание

Что такое обслуживание и зачем оно так важно? Программа старается хранить свои данные максимально корректно и надёжно, но окружающая её операционная система или аппаратура может дать сбой. Кроме того, в базе данных естественным образом накапливается определённое количество "мусора" - старых статей, помеченных как прочитанные и не имеченных меткой "прочитать позже". Такие данные (во избежание замедления работы) надо периодически удалять.

На случай восстановления утерянных данных желательно делать копии всей базы. Также неплохо экспортировать список фильтров (подборок) в файл YAML - тогда, в случае сбоя диска, ваши фильтры будут легко восстановлены.

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

Резервное копирование осуществляется в фиксированную директорию - см. соответствующее сообщение в конце процесса.

Список функционала по версиям

Version 0.1 "pesah-2013"

- Tags (watches) support
- Import YAML file with tags descriptions
- Statistics report
- Newspaper title
- Leave at least N elements while cleaning each feed
- Add RSS under new/existing group
- Keyboard accelerators
- Interactive update of article "read" state
- Nespaper name & reference in post title

Version 0.5 "rainy weekend"

- Links to Facebook and Google+ for article sharing
- Edit filters list
- Export filters to YAML
- Button "Re-apply filtes"
- Correct display of zero "unread" counter in dynamic HTML
- Minimal messages on start
- Fixed bug in "mark read and next" for page with "read" elements
- Dynamic set/remove bold on read/unread menu items

Version 0.6 "lag ba-omer"

- Database vacuum action
- Fixed bug with Windoze TCP buffer for LWP
- Single executable for Windoze
- Fixed bug: no rule with same name allowed
- Fixed bug: incorrect page number cause wrong page display
- Correct page transfer on OPML export

Version 0.7 "hamsin"

- OPML file upload from client side to application
- Read RSS title and site address using RSS link
- Remove/edit RSS feed
- Newspaper settings editing and reset to defaults
- Page content query optimized with "limit"
- "read" items correct display in newspaper
- Support 3 types of newspaper format: titles/text/full
- Reaction for sort/unread listboxes changes
- Mark with "star"
- Interactive global DIV element with feeds refresh progress
- Twitter sharing option in article view
- IE-compatibility bug fixed
- Cleanup options tuning
- Special watches always displayed with both read/unread elements inside
- Fixed bug, related to big amounts of records in posts table
- Fixed bug in page navigation buttons display

Version 0.8 "shavuot"

- Fixed bug in new feed definition
- Correct feeds re-display after sorting/filtering options change
- Full re-org of settings screen
- Updated icons set
- Internal fix for CGI names
- Tips (hints) with 3 states (hidden/title/open)

Version 0.9 "rosh-a-shana"

- Fixed bug in complicated rules editing
- Fixed garbage messages on MSWin application start
- Correct stages reporting on MSWin application start
- Tags and categories became independent
- Tags re-calculated from scratch on "re-run filters" stage
- Better spacing for UI elements
- Pattern / category search

Version 0.95 "hanuka"

- Fixed bug in empty watch/rss/group counter update
- Added categories report with statistics and "mark all as read" button
- Extra accelerators for cleanup, reload and administration menu
- Fixed bug: added keyboard mapping in empty newspaper screen
- Added massive check/uncheck action for current page
- Fixed bug in empty RSS display
- Icons re-design

Version 1.01 "purim"

- Empty page displayed with possible refresh options
- "Starred" article title colored with blue
- Implemented "mark/unmark star" for whole page
- Fully implemented "trash" watch (filter)
- Added "associate with..." option per category
- Added menu for moving rules between watches
- Special display for latest timestamps (today,N hours ago,M minutes ago)
- Pre-check form fields in New RSS screen
- Correct DB cleanup in MS Windoze
- Info & reminder in report about old records clean / DB vacuum
- Fixed bug in references/images URL inside article

Version 1.02 "rain in may"

- Automatic popup, reminding about DB cleanup
- Automatic popup, reminding about feeds refresh
- Cleanup and vacuum joined into single operation
- Added keyboard control for article selection, marking as read, content show/hide
- Operation "mark read and next" got progress indicator and screens deactivation shade
- Fixed bug in statistics caclulation after "trash" filter application
- Unified style for "nothing to display" dashboard
- Added missing defaults in "viewing settings"
- Keyboard control got "post-action" that prevents current article display out of scroll area

Version 1.03 "back to school"

- Interface language selection (provided Russian language support)
- New option: open specific view after articles refresh
- Feeds placement control (in settings screen)
- Confirmation before YAML upload (DB cleanup)
- Keyboard navigation for empty newspaper
- Bug fixes in web-service communication
- Bug fix in query arguments passing
- Added DB schema upgrade on demand

Version 1.04 "hot november"

- Filters got option for limited use inside RSS group
- Initial statistics collection indicated by "processing" screen
- Fixes in "search" field
- Added option "links" in view selection listbox
- Size correction for big pictures inside article
- Links correction inside articles
- Removed irrelevant debug messages in production log

Version 1.05 "Perl is over"

- Added new automatic group "unfiltered"
- Automatic DB backup
- Download progress updated in window title
- Removed separate 'compress' button from maintenance menu

Version 1.05b "Perl is over (beta)"

- Article extra menu - open dialog for lookup in external search engines
- External search engines specified in JSON file
- Tag re-assignment menu for current article
- Enable/disable specific feed download
- Minor bug fixes and code cleanup
- Display errors & statistics at the end of refresh and offer feeds report/editing
- Hide navigation buttons during feeds refresh
- Floating header over scrolled feeds newspaper
- Force site icon dimensions to fixed, reasonable values
- Suggest new/sample subscription(s) on empty database
- Refresh buttons in feed editing screen
- Possibility to define feed using site URL or RSS feed URL
- Install/un-install utility (for MS WindoZe)
- Auto-hiding main toolbar menu with modern style button (including mobile)
- Windows installer runs web-server as service without console window

To be implemented soon

- Individual display options for views/feeds/groups
- Save/restore unread/marked articles in XML/YAML format
- Select what page to be opened after filters re-run and after cleanup
- Warn about non-saved option(s) on settings page close
- Download of OPML/YAML files on client side
- Left menu control (selection hooks) instead of re-draw
Free Web Hosting