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. Возможно, за такими сетями будущее.
Автор: ITSumma