Comment récupérer tous les anciens éléments d'un flux RSS?

117

J'ai essayé d'écrire mon propre lecteur RSS. Je peux gérer le bit "parse XML". La chose sur laquelle je suis bloqué est "Comment puis-je récupérer les anciens messages?"

La plupart des flux RSS ne répertorient que les 10 à 25 éléments les plus récents de leur fichier XML. Comment obtenir TOUS les éléments d'un flux, et pas seulement les plus récents?

La seule solution que j'ai pu trouver était d'utiliser l'API Google Reader "non officielle", qui serait quelque chose comme

http://www.google.com/reader/atom/feed/http://fskrealityguide.blogspot.com/feeds/posts/default?n=1000

Je ne souhaite pas que mon application dépende de Google Reader.

Y a-t-il une meilleure façon? J'ai remarqué que sur Blogger, je peux faire "? Start-index = 1 & max-results = 1000", et sur WordPress je peux faire "? Paged = 5". Existe-t-il un moyen général de récupérer un flux RSS pour qu'il me donne tout, et pas seulement les éléments les plus récents?

user14834
la source
1
Pour les personnes intéressées, la documentation de l'API Unofficial Reader: code.google.com/p/google-reader-api/w/list
Nate Parsons
3
Y a-t-il un nouveau moyen depuis que la question a été posée il y a environ 6 ans comme Feedly dose
shareef
J'aimerais voir une réponse mise à jour à cette question. Très décevant si rien n'a changé en 8 ans! C'est le seul nouveau développement que j'ai vu: app.pub.center stackoverflow.com/questions/5761954/…
Jess Riedel

Réponses:

65

Les flux RSS / Atom ne permettent pas de récupérer des informations historiques. C'est à l'éditeur du flux de le fournir s'il le souhaite, comme dans les exemples de blogueur ou de wordpress que vous avez donnés ci-dessus.

La seule raison pour laquelle Google Reader a plus d'informations est qu'il s'en souvient dès sa première apparition.

Il y a des informations sur quelque chose comme ça dont on parle comme une extension du protocole ATOM , mais je ne sais pas si cela est réellement implémenté quelque part.

David Dean
la source
10

Comme les autres réponses mentionnées ici, un flux peut ne pas fournir de données d'archives, mais des éléments historiques peuvent être disponibles à partir d'une autre source.

Wayback Machine d'Archive.org a une API pour accéder au contenu historique, y compris les flux RSS (si leurs robots l'ont téléchargé). J'ai créé l'outil Web Backfeed qui utilise cette API pour régénérer un flux contenant des éléments historiques concaténés. Si vous souhaitez discuter de la mise en œuvre en détail, veuillez nous contacter.

Comendant Quinn
la source
3
Oups! Je l'ai trouvé. Ce lien le détaille ws-dl.blogspot.fr/2013/07/... Plus précisément, vous feriez quelque chose comme ça web.archive.org/web/timemap/link/$url Merci!
The1nk
8

D'après mon expérience avec RSS, le flux est compilé par les X derniers éléments où X est une variable. Certains flux peuvent avoir la liste complète, mais pour des raisons de bande passante, la plupart des endroits sont probablement limités aux derniers éléments.

La réponse probable pour le lecteur Google ayant les anciennes informations, est qu'il les stocke sur son côté pour les utilisateurs plus tard.

Rob Haupt
la source
8

En plus de ce que David Dean a dit, les flux RSS / Atom ne contiendront que ce que l'éditeur du flux a à ce moment-là et quelqu'un devrait collecter activement ces informations afin d'avoir des informations historiques. Fondamentalement, Google Reader le faisait gratuitement et lorsque vous interagissiez avec lui, vous pouviez récupérer ces informations stockées sur les serveurs de base de données Google.

Maintenant qu'ils ont retiré le service, à ma connaissance, vous avez deux choix. Vous devez soit commencer à collecter ces informations à partir de vos flux d'intérêt et stocker les données en utilisant XML ou quelque chose de similaire, soit vous pouvez payer ces données auprès de l'une des entreprises qui vendent ce type d'informations de flux archivées.

J'espère que cette information aide quelqu'un.

Seán

Seán O'Sullivan
la source
6

Une autre solution potentielle qui n'était peut-être pas disponible lorsque la question a été posée à l'origine et ne devrait nécessiter aucun service spécifique.

  1. Trouvez l'URL du flux RSS que vous souhaitez et utilisez waybackpack pour obtenir les URL archivées de ce flux.
  2. Utilisez FeedReader ou une bibliothèque similaire pour afficher le flux RSS archivé.
  3. Prenez les URL de chaque flux et récupérez-les comme vous le souhaitez. Si vous remontez dans le temps, il est possible qu'il y ait des liens morts.
Alex Klibisz
la source
C'est une brillante suggestion. La Wayback Machine archive également les flux RSS. Cela ne fonctionnera pas avec les lecteurs de flux GUI, mais pour les lecteurs programmatiques, il n'est pas trop difficile de remplacer la requête Web et de lui fournir à la place le fichier RSS / Atom mis en cache.
Cerin
@Alex, pourriez-vous élaborer avec un exemple? Je trouve votre suggestion très intéressante.
SanMelkote le
2
@SanMelkote Je n'y ai pas pensé depuis longtemps. J'essaierai de me rappeler de déterrer mon code et si je peux le trouver, je le posterai comme un github gist.
Alex Klibisz le
2

Les standards RSS / Atom ne permettent pas d'interroger les anciens articles RSS.

Je travaille également sur un lecteur RSS et j'ai décidé de créer mon propre service d'archivage RSS ( https://app.pub.center ). L'utilisation de l'API REST est gratuite. Nous facturons de l'argent pour les notifications push.

Le service interroge quotidiennement son catalogue de flux RSS et met en cache les articles. Ensuite, vous pouvez récupérer ces articles dans un ordre chronologique. Par exemple:

Page 1 de l'Atlantique https://pub.center/feed/02702624d8a4c825dde21af94e9169773454e0c3/articles?limit=10&page=1

Page 2 de l'Atlantique https://pub.center/feed/02702624d8a4c825dde21af94e9169773454e0c3/articles?limit=10&page=2

wle8300
la source
Ça a l'air intéressant, mais le lien est mort.
bluenote10 le
2

Toutes les réponses précédentes s'appuyaient plus ou moins sur les services existants pour avoir toujours une copie de ce flux ou sur le moteur de flux pour pouvoir fournir des éléments plus anciens de manière dynamique.

Il existe un autre moyen, certes pro-actif et plutôt théorique, de le faire: laissez votre lecteur de flux utiliser un proxy de mise en cache qui comprend sémantiquement les flux RSS et / ou Atom et les met en cache sur une base par élément jusqu'à autant d'éléments que vous configurez.

Si le lecteur de flux n'interroge pas régulièrement les flux, le proxy pourrait récupérer les flux connus en fonction du temps de lui-même pour ne pas manquer un élément dans les flux très volatils comme celui de User Friendly qui n'a qu'un seul élément et change tous les jours (ou au moins l'habitude de le faire). Par conséquent, si le feedreadere.g. Si la connexion réseau est tombée en panne ou perdue pendant que vous êtes absent pendant quelques jours, vous risquez de perdre des éléments dans le cache de votre lecteur de flux. Le fait d'avoir le proxy pour récupérer ces flux régulièrement (par exemple à partir d'un centre de données au lieu de chez vous ou sur un serveur au lieu d'un ordinateur portable) vous permet d'exécuter facilement le lecteur de flux uniquement alors et quand sans perdre les éléments qui ont été publiés après que votre lecteur de flux a récupéré les flux la dernière fois, mais a tourné à nouveau avant de les récupérer la prochaine fois.

J'appelle ce concept un proxy d'alimentation sémantique et j'ai implémenté une implémentation de preuve de concept appelée sfp . Ce n'est cependant pas beaucoup plus qu'une preuve de concept et je ne l'ai pas développé davantage. (Je serais donc ravi des suggestions de projets avec des idées ou des objectifs similaires. :-)

Axel Beckert
la source