Wie rufe ich alle alten Elemente in einem RSS-Feed ab?

117

Ich habe mit dem Schreiben meines eigenen RSS-Readers experimentiert. Ich kann mit dem Bit "XML analysieren" umgehen. Die Sache, an der ich hängen bleibe, ist "Wie hole ich ältere Beiträge?"

Die meisten RSS-Feeds listen nur die 10 bis 25 neuesten Elemente in ihrer XML-Datei auf. Wie erhalte ich ALLE Elemente in einem Feed und nicht nur die neuesten?

Die einzige Lösung, die ich finden konnte, war die Verwendung der "inoffiziellen" Google Reader-API

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

Ich möchte meine Anwendung nicht von Google Reader abhängig machen.

Gibt es einen besseren Weg? Ich habe festgestellt, dass ich in Blogger "? Start-index = 1 & max-results = 1000" und in WordPress "? Paged = 5" ausführen kann. Gibt es eine allgemeine Möglichkeit, einen RSS-Feed abzurufen, damit er mir alles bietet und nicht nur die neuesten Elemente?

user14834
quelle
1
Für Interessenten bietet die inoffizielle Reader-API folgende Dokumente: code.google.com/p/google-reader-api/w/list
Nate Parsons
3
Gibt es einen neuen Weg, seit die Frage vor ungefähr 6 Jahren gestellt wurde, wie Feedly dose
shareef
Ich würde gerne eine aktualisierte Antwort auf diese Frage sehen. Sehr enttäuschend, wenn sich in 8 Jahren nichts geändert hat! Dies ist die einzige Neuentwicklung, die ich gesehen habe: app.pub.center stackoverflow.com/questions/5761954/…
Jess Riedel

Antworten:

65

RSS / Atom-Feeds ermöglichen nicht das Abrufen historischer Informationen. Es ist Sache des Herausgebers des Feeds, ihn bereitzustellen, wenn er dies wünscht, wie in den oben angegebenen Beispielen für Blogger oder WordPress.

Der einzige Grund, warum Google Reader mehr Informationen enthält, besteht darin, dass es sich an diese Informationen erinnert, als sie zum ersten Mal angezeigt wurden.

Es gibt einige Informationen zu so etwas, über die als Erweiterung des ATOM-Protokolls gesprochen wird , aber ich weiß nicht, ob es tatsächlich irgendwo implementiert ist.

David Dean
quelle
10

Wie in den anderen hier erwähnten Antworten angegeben, enthält ein Feed möglicherweise keine Archivdaten, aber historische Elemente sind möglicherweise aus einer anderen Quelle verfügbar.

Die Wayback-Maschine von Archive.org verfügt über eine API für den Zugriff auf historische Inhalte, einschließlich RSS-Feeds (sofern diese von ihren Bots heruntergeladen wurden). Ich habe das Web-Tool Backfeed erstellt , das diese API verwendet, um einen Feed mit verketteten historischen Elementen neu zu generieren . Wenn Sie die Implementierung im Detail besprechen möchten, setzen Sie sich bitte mit uns in Verbindung.

Quinn Comendant
quelle
3
Hoppla! Fand es. Dieser Link beschreibt es ws-dl.blogspot.fr/2013/07/… Speziell würden Sie so etwas tun web.archive.org/web/timemap/link/$url Danke!
The1nk
8

Nach meiner Erfahrung mit RSS wird der Feed aus den letzten X Elementen zusammengestellt, wobei X eine Variable ist. Bestimmte Feeds enthalten möglicherweise die vollständige Liste, aber aus Gründen der Bandbreite beschränken sich die meisten Orte wahrscheinlich nur auf die letzten Elemente.

Die wahrscheinliche Antwort für Google Reader mit den alten Informationen ist, dass sie später für Benutzer auf der Seite gespeichert werden.

Rob Haupt
quelle
8

Zusätzlich zu dem, was David Dean sagte, enthalten die RSS / Atom-Feeds nur das, was der Herausgeber des Feeds zu diesem Zeitpunkt hat, und jemand müsste diese Informationen aktiv sammeln, um historische Informationen zu erhalten. Grundsätzlich tat Google Reader dies kostenlos und wenn Sie damit interagierten, konnten Sie diese gespeicherten Informationen von den Google-Datenbankservern abrufen.

Nachdem sie den Dienst eingestellt haben, haben Sie meines Wissens zwei Möglichkeiten. Sie müssen entweder mit der Erfassung dieser Informationen aus Ihren interessierenden Feeds beginnen und die Daten mithilfe von XML oder Ähnlichem speichern, oder Sie können diese Daten von einem der Unternehmen bezahlen, die diese Art von archivierten Feed-Informationen verkaufen.

Ich hoffe, diese Informationen helfen jemandem.

Seán

Seán O'Sullivan
quelle
6

Eine weitere mögliche Lösung, die möglicherweise nicht verfügbar war, als die Frage ursprünglich gestellt wurde, und für die kein spezifischer Service erforderlich sein sollte.

  1. Suchen Sie die URL des gewünschten RSS-Feeds und verwenden Sie waybackpack , um die archivierten URLs für diesen Feed abzurufen.
  2. Verwenden Sie FeedReader oder eine ähnliche Bibliothek, um den archivierten RSS-Feed abzurufen .
  3. Nehmen Sie die URLs aus jedem Feed und kratzen Sie sie nach Ihren Wünschen ab. Wenn Sie in die Vergangenheit reisen, ist es möglich, dass einige tote Links vorhanden sind.
Alex Klibisz
quelle
Dies ist ein brillanter Vorschlag. Die Wayback-Maschine archiviert tatsächlich auch RSS-Feeds. Es funktioniert nicht mit GUI-Feed-Readern, aber für programmatische Reader ist es nicht allzu schwierig, die Webanforderung zu überschreiben und stattdessen die zwischengespeicherte RSS / Atom-Datei zu füttern.
Cerin
@ Alex, könnten Sie mit einem Beispiel näher darauf eingehen? Ich finde Ihren Vorschlag sehr faszinierend.
SanMelkote
2
@ SanMelkote Ich habe lange nicht mehr darüber nachgedacht. Ich werde versuchen, mich daran zu erinnern, meinen Code auszuheben, und wenn ich ihn finde, werde ich ihn als Github-Kern veröffentlichen.
Alex Klibisz
2

Die RSS / Atom-Standards bieten keine Möglichkeit, ältere RSS-Artikel abzufragen.

Ich arbeite auch an einem RSS-Reader und habe beschlossen, einen eigenen RSS-Archivierungsdienst ( https://app.pub.center ) zu erstellen . Es ist kostenlos, die REST-API zu verwenden. Wir berechnen Geld für Push-Benachrichtigungen.

Der Dienst fragt täglich seinen Katalog mit RSS-Feeds ab und speichert die Artikel zwischen. Anschließend können Sie diese Artikel in chronologischer Reihenfolge zurückerhalten. Beispielsweise:

Seite 1 des Atlantiks https://pub.center/feed/02702624d8a4c825dde21af94e9169773454e0c3/articles?limit=10&page=1

Seite 2 des Atlantiks https://pub.center/feed/02702624d8a4c825dde21af94e9169773454e0c3/articles?limit=10&page=2

wle8300
quelle
Sieht interessant aus, aber der Link ist tot.
bluenote10
2

Alle vorherigen Antworten stützten sich mehr oder weniger auf vorhandene Dienste, um noch eine Kopie dieses Feeds oder der Feed-Engine zu haben, um ältere Elemente dynamisch bereitstellen zu können.

Es gibt jedoch eine andere, zugegebenermaßen proaktive und eher theoretische Möglichkeit, dies zu tun: Lassen Sie Ihren Feedreader einen Caching-Proxy verwenden, der RSS- und / oder Atom-Feeds semantisch versteht und sie auf Elementbasis bis zu so vielen Elementen zwischenspeichert, wie Sie konfigurieren.

Wenn der Feedreader Feeds nicht regelmäßig abfragt, kann der Proxy bekannte Feeds zeitabhängig abrufen, um einen Artikel in hochflüchtigen Feeds wie dem von User Friendly nicht zu verpassen, der nur einen Artikel enthält und sich täglich (oder zumindest) ändert verwendet, um dies zu tun). Wenn also der feedreadere.g. Wenn Sie während einiger Tage nicht erreichbar sind oder die Netzwerkverbindung unterbrochen haben, verlieren Sie möglicherweise Elemente im Cache Ihres Feedreaders. Wenn Sie den Proxy haben, um diese Feeds regelmäßig abzurufen (z. B. von einem Rechenzentrum statt von zu Hause oder auf einem Server anstelle eines Laptops), können Sie den Feedreader nur dann und dann problemlos ausführen, ohne Elemente zu verlieren, die nach dem Abrufen der Feeds durch Ihren Feedreader veröffentlicht wurden letztes Mal aber wieder herausgedreht, bevor Sie sie das nächste Mal holen.

Ich nenne dieses Konzept einen semantischen Feed-Proxy und habe eine Proof-of-Concept-Implementierung namens sfp implementiert . Es ist jedoch nicht viel mehr als ein Proof of Concept und ich habe es nicht weiterentwickelt. (Ich würde mich also über Hinweise zu Projekten mit ähnlichen Ideen oder Zwecken freuen. :-)

Axel Beckert
quelle