Я экспериментировал с написанием собственного RSS-ридера. Я могу обработать бит "синтаксический анализ XML". Я застреваю на вопросе "Как мне получить более старые сообщения?"
Большинство RSS-каналов перечисляют только 10-25 самых последних элементов в своем XML-файле. Как мне получить ВСЕ элементы в ленте, а не только самые последние?
Единственное решение, которое я смог найти, - это использование «неофициального» API Google Reader, что-то вроде
Я не хочу, чтобы мое приложение зависело от Google Reader.
Есть ли способ лучше? Я заметил, что в Blogger я могу сделать «? Start-index = 1 & max-results = 1000», а в WordPress - «? Paged = 5». Есть ли какой-нибудь общий способ получить RSS-канал, чтобы он давал мне все, а не только самые последние элементы?
Ответы:
RSS / Atom-каналы не позволяют извлекать историческую информацию. Издатель канала должен предоставить его, если он хочет, например, в примерах blogger или wordpress, которые вы привели выше.
Единственная причина, по которой в Google Reader есть больше информации, заключается в том, что он запомнил ее с того момента, как появился в первый раз.
Есть некоторая информация о чем-то вроде этого, о котором говорится как о расширении протокола ATOM , но я не знаю, действительно ли это где-то реализовано.
источник
Как упоминалось в других ответах здесь, фид может не предоставлять архивных данных, но исторические элементы могут быть доступны из другого источника.
У Wayback Machine Archive.org есть API для доступа к историческому контенту, включая RSS-каналы (если их загрузили их боты). Я создал веб-инструмент Backfeed, который использует этот API для повторного создания канала, содержащего сцепленные исторические элементы. Если вы хотите подробно обсудить реализацию, свяжитесь с нами.
источник
По моему опыту работы с RSS, лента составляется из последних X элементов, где X - переменная. У некоторых фидов может быть полный список, но ради пропускной способности большинство мест, вероятно, ограничиваются только несколькими последними элементами.
Вероятный ответ для читателя Google, имеющего старую информацию, заключается в том, что он хранит ее на своей стороне для пользователей позже.
источник
В дополнение к тому, что сказал Дэвид Дин, каналы RSS / Atom будут содержать только то, что издатель канала имеет в данный момент, и кто-то должен будет активно собирать эту информацию, чтобы иметь какую-либо историческую информацию. В основном Google Reader делал это бесплатно, и когда вы взаимодействовали с ним, вы могли получить эту сохраненную информацию с серверов базы данных Google.
Теперь, когда они прекратили службу, насколько мне известно, у вас есть два варианта. Вы должны либо начать сбор этой информации из интересующих вас каналов и сохранить данные с помощью XML или чего-то подобного, либо вы можете заплатить за эти данные одной из компаний, которые продают этот тип архивированной информации каналов.
Надеюсь, эта информация кому-то поможет.
Seán
источник
Еще одно потенциальное решение, которое могло быть недоступно, когда вопрос был первоначально задан, и не должно требовать какой-либо конкретной услуги.
источник
В стандартах RSS / Atom нет способов запрашивать старые статьи RSS.
Я также работаю над программой чтения RSS и решил создать свою собственную службу архивирования RSS ( https://app.pub.center ). Использование REST API бесплатно. Мы берем деньги за push-уведомления.
Сервис ежедневно опрашивает свой каталог RSS-каналов и кеширует статьи. Затем вы можете вернуть эти статьи в хронологическом порядке. Например:
Страница 1 из The Atlantic
https://pub.center/feed/02702624d8a4c825dde21af94e9169773454e0c3/articles?limit=10&page=1
Страница 2 из The Atlantic
https://pub.center/feed/02702624d8a4c825dde21af94e9169773454e0c3/articles?limit=10&page=2
источник
Все предыдущие ответы более или менее полагались на существующие службы, чтобы у них по-прежнему была копия этого канала, или на механизм подачи, чтобы иметь возможность динамически предоставлять старые элементы.
Тем не менее, есть другой, по общему признанию упреждающий и довольно теоретический способ сделать это: пусть ваша программа чтения каналов использует кеширующий прокси, который семантически понимает каналы RSS и / или Atom и кэширует их на основе каждого элемента до такого количества элементов, которое вы настраиваете.
Если средство чтения каналов не опрашивает каналы регулярно, прокси-сервер может получать известные каналы по своему усмотрению, чтобы не пропустить элемент в очень изменчивых каналах, например, из User Friendly, который имеет только один элемент и изменяется каждый день (или, по крайней мере, раньше так делал). Следовательно, если feedreadere.g. сбой или потеря сетевого подключения, пока вас нет на несколько дней, вы можете потерять элементы в кэше программы чтения лент. Наличие прокси-сервера для регулярного получения этих каналов (например, из центра обработки данных, а не из дома или на сервере вместо ноутбука) позволяет вам легко запускать программу чтения каналов только тогда и тогда, не теряя элементы, которые были опубликованы после того, как ваша программа чтения каналов загрузила каналы в прошлый раз, но снова повернули, прежде чем вы получите их в следующий раз.
Я называю эту концепцию Semantic Feed Proxy, и я реализовал доказательство реализации концепции под названием sfp . Хотя это не более чем доказательство концепции, и я не развивал ее дальше. (Так что я был бы рад подсказкам для проектов с похожими идеями или целями. :-)
источник