RSS-агрегатор NetNewsWire

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

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

Завершение хайпа — признак взросления технологии


В 2013 году компания Google прекратила разработку RSS-ридера Google Reader. Это стало сигналом, что хайп вокруг блогосферы закончился. Наступила новая эпоха социальных сетей и централизованных платформ.

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

Казалось бы, нашествие UGC означает расцвет RSS? Но нет, для социальных сетей первой волны RSS стал идеол��гическим врагом. Фиды RSS удалялись из социальных сетей. Каждый сайт типа Facebook пытался замкнуть аудиторию строго в своём загончике. Сейчас дошло до того, что даже внешние ссылки они стараются скрыть и заменить на «предпросмотр страницы» или кэшированную версию. Главное, чтобы со своих серверов.

Такой огороженный сад — изобретение Apple. А сейчас этот бесславный «подвиг» пытаются повторить другие интернет-гиганты, в том числе Google. О принципах открытого свободного интернета никто не думает. Прибыль на первом месте. Идёт война за внимание пользователей, каждая дополнительная секунда — на вес золота. Захватив внимание, отпускать человека уже нельзя, это закон бизнеса.

Google Reader запустили во времена бума блогосферы в 2005 году, когда на рынке присутствовало огромное количество других RSS-ридеров. Самым популярным считался Bloglines.

Но веб-синдикация типа RSS не совсем вписалась в новую бизнес-модель Google, которая как раз в то время запустила свою социальную сеть (тоже неудачно).

Закрытие сервиса состоялось на фоне постепенной деградации RSS-индустрии. В начале 2015 года одним из последних прекратил своё существование Bloglines. Как и лопнувший пузырь доткомов с банкротством половины интернет-компаний в конце 90-х, этот процесс отмирания лишних сущностей — признак зрелой технологии и взросления индустрии, которая избавляется от пены финансовых спекуляций. И выходит на плато здорового использования.

То же самое сейчас происходит с децентрализацией, P2P-мессенджерами, RSS и другими свободными технологиями.

Аудитория RSS — самые продвинутые пользователи. Кажется, что технология отлично себя зарекомендовала. И сейчас из «впадины разочарования» она движется по «склону просвещения» на «плато продуктивного использования».


Стадии технологического развития от Gartner, август 2021

Google Reader и Bloglines умерли, но дело их живёт. RSS и не думает уходить со сцены. Совсем наоборот, технология возрождается.

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

Мосты для сайтов, у которых нет RSS




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

Чтобы исправить это недоразумение, разработан PHP-проект RSS-Bridge. Он помогает генерировать ленты RSS для сайтов, которые не поддерживают экспорт. Можно поднять на своём сервере или запустить из консоли. Для примера см. чужие мосты. Полученный оттуда фид загружаем в свой агрегатор, он будет периодически дёргать и обновлять его.

На данный момент сообщество подготовило скрипты генерации RSS примерно для сотни популярных сайтов, в том числе:

  • Facebook: последние посты на указанный странице или профиле (временно не работает)
  • YouTube: канал, плейлист или новые результаты поиска по ключевым словам
  • Google: новые результаты поиска по ключевым словам
  • Instagram: новые фотографии от указанного юзера
  • Twitter (RSS-фиды для твиттера можно получить на специализированном прокси типа Nitter)
  • Telegram: посты в публичном канале

… и многие другие.

RSS-Bridge экспортирует в несколько форматов: Atom, MRSS, HTML, JSON и Plaintext (можно добавить свой формат через Format-API).

Пример экспорта из Telegram в HTML:

https://sebsauvage.net/rss-bridge/?action=display&bridge=Telegram&username=%40ancotir_science&format=Html



Получаем сгенерированный HTML, например, для публикации на сайте или просто для чтения в стандартном формате, без необходимости запускать клиент Telegram:



То же самое с RSS.

Форматы JSON и текст подходят для использования в других приложениях. Например, можно добавить собранную информацию в базу данных или электронные таблицы. Отправить сообщение по почте, SMS, в телеграм-канал, Slack или Discord.

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

Примечание. Примерно половина скриптов RSS-Bridge сейчас не работает, потому что Facebook и другие сайты активно противодействуют скрапингу и часто меняют шаблоны. Не всегда разработчики успевают оперативно вносить изменения в скрипты для генерации RSS.

RSS-прокси для остальных сайтов


RSS Proxy — ещё один проект генерации RSS для любого сайта (путём анализа структуры HTML).



На выходе получаем фиды RSS/Atom или JSON, см. демо.

Проще всего поднять RSS Proxy в докер-контейнере:

docker pull damoeb/rss-proxy
docker run -p 3000:3000 -it damoeb/rss-proxy

Потом открываем localhost:3000 в браузере.

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

Для понимания, в RSS-Bridge встроены правила извлечения контента, которые подходят для многих сайтов и других информационных каналов (например, в телеграме). Они работают отлично. Однако RSS-Proxy идёт ещё дальше и пытается извлекать контент вообще с любых сайтов с базовой структурой HTML.

Для этого реализована весьма изящная логика:

        let score = 0;
        if (contextPathContains('header')) score -= 2;
        if (contextPathContains('nav')) score --;
        if (contextPathContains('article')) score += 2;
        if (contextPathContains('main')) score += 2;
        if (contextPathContains('aside')) score -= 2;
        if (contextPathContains('footer')) score -= 2;
        if (contextPathContains('ul>li')) score --;
        if (linkPathContains('h1')) score += 4;
        if (linkPathContains('h2')) score += 3;
        if (linkPathContains('h3')) score += 2;
        if (linkPathContains('h4')) score ++;
        if (linkPathContains('strong')) score ++;
        if (linkPathContains('aside')) score --;
        if (linkPathContains('article')) score += 2;
        // if (rule.linkPath.toLowerCase() === 'a') score --;
        if (rule.contextXPath.toLowerCase().endsWith('a')) score -= 5;
        if (rule.linkXPath.toLowerCase() === 'self') score --;

Если HTML нормальный, то такой подход работает вполне качественно. Семантические теги в HTML — очень полезная вещь не просто для визуальной разметки, но и для парсинга страницы. Сами разработчики могут использовать инструменты типа RSS-Proxy, чтобы создавать и публиковать фиды для своих сайтов. Ну и для чужих это делать никто не мешает.

Ещё один похожий проект — китайский фид-генератор RSSHub, тоже умеет генерировать фиды практически из чего угодно. Работает в связке с браузерным расширением RSSHub-Radar, мобильными приложениями RSSBud (iOS) и RSSAid (Android).

Автор RSS-Proxy сейчас переписывает свою программу на Котлине: он запустил новый проект rich-RSS, и там вроде бы даже реализованы некоторые функции, которых нет в RSS-Proxy, но это нужно ещё проверить.

См. также другие RSS-генераторы в огромном списке различных инструментов для работы с RSS.

RSS-ридеры (агрегаторы)




Судя по всему, децентрализация снова входит в моду. RSS возвращается в нашу жизнь. Хотя опытные люди спокойно продолжали им пользоваться все эти годы.

Актуальный список RSS-ридеров и агрегаторов включает несколько десятков программ. Наш опрос годичной давности показал, что самыми популярными на Хабре являются Feedly (39%), Inoreader (24%) и категория «Другие» (32%).

В последнее время появилось несколько новых разработок. Например, FreshRSS (десктопная версия бесплатная) и NetNewsWire (бесплатный и опенсорсный ридер, но только под macOS/iOS).


FreshRSS


NetNewsWire

В комментариях к предыдущей статье отметили главные достоинства RSS-ридеров:

  • Вы никогда ничего не пропустите
  • Можно читать ленту в удобное время
  • Удобно делиться подборками фидов

Освоив RSS, уже практически невозможно вернуться к примитивному способу потребления информации. Ведь и СМИ, и социальные сети норовят скормить читателю информацию в стиле «кушай, что дают» или «читай то, что написано на главной странице / в ленте».

Особенно поражает лицемерие социальных сетей, которые призывают людей «делиться», а на самом деле удаляют RSS со страниц, чтобы удержать людей внутри своей изолированной песочницы.

Нет уж, спасибо за сервис. Мы как-нибудь сами.

Будущее RSS


Слухи о смерти RSS сильно преувеличены. Это отличная технология, которая и в нынешнем виде великолепно работает на свободных и открытых принципах.

Централизованные платформы типа Facebook умеют засасывать огромную аудиторию, но это временно. Они не способны сосуществовать с другими такими же централизованными платформами, каждая из которых работает по принципу мощного пылесоса. Такая модель неустойчива и нежизнеспособна по определению. Этим гигантам суждено убивать друг друга, иначе сам умрёшь.

В отличие от них, децентрализация — это устойчивая, жизнеспособная и долговременная модель развития Сети, а веб-синдикация типа RSS/Atom отлично в неё вписывается.

Сейчас W3C рассматривает новый стандарт ActivityStreams, который называют «RSS на стероидах». На его основе сделан в том числе протокол децентрализованных социальных сетей ActivityPub. Возможно, за такими сетями будущее.