Как Google Reader получает каждый элемент в ленте RSS? - PullRequest
23 голосов
/ 21 октября 2008

RSS-канал Slashdot - http://rss.slashdot.org/Slashdot/slashdot. Если я загружаю XML-файл напрямую, я получаю только несколько сообщений с сегодняшнего дня. Однако, если я подписываюсь на канал в Google Reader и продолжаю прокручивать их интерфейс «бесконечной прокрутки», создается впечатление, что я могу получить произвольное количество сообщений Slashdot из прошлого - может быть, я смогу получить каждый пост Slashdot когда-либо?

  1. Как Google Reader извлекает неограниченное количество сообщений из RSS-канала?
  2. Как я могу сделать то же самое?

Ответы [ 4 ]

19 голосов
/ 21 октября 2008

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

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

13 голосов
/ 21 октября 2008

Я только что обнаружил, что если вы аутентифицированы, вы можете сделать что-то вроде:

http://www.google.com/reader/atom/feed/http://rss.slashdot.org/Slashdot/slashdot?n=100

для получения произвольного числа результатов из ленты.

2 голосов
/ 21 октября 2008

Они годами индексируют сеть и хранят все, что приходят. Поэтому, как только вы добавите ссылку «подписаться на эту» на свою страницу, сканер Google начнет индексировать эту страницу и сохранит ее.

Для RSS они также имеют преимущество в том, что несколько человек подписываются на один и тот же канал.

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

1 голос
/ 30 марта 2017

Я создал службу архивирования RSS, которая делает то, о чем вы говорите (https://app.pub.center). Все RSS-каналы бесплатны для использования через REST. Если вам нужны push-уведомления, вы должны переключиться на платный план.

PubCenter ежедневно опрашивает свой каталог RSS-каналов и кэширует статьи. Затем вы можете получить эти статьи обратно в хронологическом порядке. Например:

Страница 1 Атлантики https://pub.center/feed/02702624d8a4c825dde21af94e9169773454e0c3/articles?limit=10&page=1

Страница 2 Атлантики https://pub.center/feed/02702624d8a4c825dde21af94e9169773454e0c3/articles?limit=10&page=2

...