Come faccio a recuperare tutti i vecchi elementi su un feed RSS?


117

Ho provato a scrivere il mio lettore RSS. Posso gestire il bit di "analisi XML". La cosa su cui mi sto bloccando è "Come faccio a recuperare i post più vecchi?"

La maggior parte dei feed RSS elenca solo i 10-25 elementi più recenti nel loro file XML. Come ottengo TUTTI gli articoli in un feed e non solo quelli più recenti?

L'unica soluzione che ho trovato è stata l'utilizzo dell'API "non ufficiale" di Google Reader, che sarebbe qualcosa di simile

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

Non voglio che la mia applicazione dipenda da Google Reader.

C'è un modo migliore? Ho notato che su Blogger posso fare "? Start-index = 1 & max-results = 1000", e su WordPress posso fare "? Paged = 5". Esiste un modo generale per recuperare un feed RSS in modo che mi dia tutto e non solo gli elementi più recenti?


1
Per chi fosse interessato, i documenti dell'API di Unofficial Reader: code.google.com/p/google-reader-api/w/list
Nate Parsons

3
C'è un nuovo modo da quando la domanda è stata posta circa 6 anni fa come la dose di Feedly
shareef

Mi piacerebbe vedere una risposta aggiornata a questa domanda. Molto deludente se non è cambiato nulla in 8 anni! Questa è l'unica novità che ho visto: app.pub.center stackoverflow.com/questions/5761954/...
Jess Riedel

Risposte:


65

I feed RSS / Atom non consentono il recupero delle informazioni storiche. Spetta all'editore del feed fornirlo se lo desidera, come negli esempi di blogger o wordpress che hai fornito sopra.

L'unico motivo per cui Google Reader ha più informazioni è che lo ha ricordato dalla prima volta che è apparso.

Ci sono alcune informazioni su qualcosa di simile di cui si parla come un'estensione del protocollo ATOM , ma non so se sia effettivamente implementato ovunque.


10

Come le altre risposte qui menzionate, un feed potrebbe non fornire dati di archivio ma gli elementi storici potrebbero essere disponibili da un'altra fonte.

Wayback Machine di Archive.org ha un'API per accedere ai contenuti storici, inclusi i feed RSS (se i loro bot l'hanno scaricato). Ho creato lo strumento web Backfeed che utilizza questa API per rigenerare un feed contenente elementi storici concatenati. Se desideri discutere l'implementazione in dettaglio, contattaci.


3
Ops! Trovato. Questo collegamento descrive in dettaglio ws-dl.blogspot.fr/2013/07/… In particolare, faresti qualcosa di simile a questo web.archive.org/web/timemap/link/$url Grazie!
The1nk

8

Nella mia esperienza con RSS, il feed è compilato dagli ultimi X elementi in cui X è una variabile. Alcuni feed possono avere l'elenco completo, ma per motivi di larghezza di banda è probabile che la maggior parte dei posti si limiti solo agli ultimi elementi.

La probabile risposta per il lettore di Google che ha le vecchie informazioni è che le sta memorizzando su un lato per gli utenti in seguito.


8

Oltre a quanto affermato da David Dean, i feed RSS / Atom conterranno solo ciò che l'editore del feed ha in quel momento e qualcuno avrebbe bisogno di raccogliere attivamente queste informazioni per avere informazioni storiche. Fondamentalmente Google Reader lo faceva gratuitamente e quando hai interagito con esso puoi recuperare queste informazioni memorizzate dai server del database di Google.

Ora che hanno ritirato il servizio, per quanto ne so hai due scelte. È necessario avviare la raccolta di queste informazioni dai feed di interesse e memorizzare i dati utilizzando XML o qualcosa del genere, oppure è possibile pagare per questi dati da una delle società che vendono questo tipo di informazioni sui feed archiviate.

Spero che queste informazioni aiutino qualcuno.

Seán


6

Un'altra potenziale soluzione che potrebbe non essere stata disponibile quando la domanda è stata inizialmente posta e non dovrebbe richiedere alcun servizio specifico.

  1. Trova l'URL del feed RSS che desideri e utilizza waybackpack per ottenere gli URL archiviati per quel feed.
  2. Uso FeedReader o una libreria simile per estrarre il feed RSS archiviato.
  3. Prendi gli URL da ogni feed e raschiali come desideri. Se stai andando indietro nel tempo, è possibile che ci siano alcuni collegamenti morti.

Questo è un suggerimento brillante. La Wayback Machine archivia effettivamente anche i feed RSS. Non funzionerà con i lettori di feed GUI, ma per i lettori programmatici, non è troppo difficile sovrascrivere la richiesta web e invece alimentarla con il file RSS / Atom memorizzato nella cache.
Cerin

@Alex, potresti elaborare con un esempio? Trovo il tuo suggerimento molto intrigante.
SanMelkote

2
@SanMelkote Non ci pensavo da molto tempo. Cercherò di ricordarmi di scavare il mio codice e se riesco a trovarlo lo posterò come gitHub Gist.
Alex Klibisz

2

Gli standard RSS / Atom non hanno modo di interrogare articoli RSS precedenti.

Sto anche lavorando a un lettore RSS e ho deciso di creare il mio servizio di archiviazione RSS ( https://app.pub.center ). È gratuito usare l'API REST. Addebitiamo denaro per le notifiche push.

Il servizio interroga quotidianamente il catalogo dei feed RSS e memorizza nella cache gli articoli. Quindi, puoi recuperare questi articoli in ordine cronologico. Per esempio:

Pagina 1 di The Atlantic https://pub.center/feed/02702624d8a4c825dde21af94e9169773454e0c3/articles?limit=10&page=1

Pagina 2 dell'Atlantico https://pub.center/feed/02702624d8a4c825dde21af94e9169773454e0c3/articles?limit=10&page=2


Sembra interessante, ma il collegamento è morto.
bluenote10

2

Tutte le risposte precedenti si basavano più o meno sui servizi esistenti per avere ancora una copia di quel feed o sul motore di feed per poter fornire dinamicamente gli articoli più vecchi.

C'è però un altro modo, dichiaratamente proattivo e piuttosto teorico, per farlo: lascia che il tuo feedreader usi un proxy di caching che capisce semanticamente i feed RSS e / o Atom e li memorizza nella cache su base per articolo fino a tutti gli elementi configurati.

Se il feedreader non esegue regolarmente il polling dei feed, il proxy potrebbe recuperare i feed noti in base al tempo per non perdere un elemento in feed altamente volatili come quello di User Friendly che ha un solo elemento e cambia ogni giorno (o almeno utilizzato per farlo). Quindi se il feedreadere.g. connessione di rete interrotta o persa mentre sei assente per alcuni giorni, potresti perdere elementi nella cache del tuo feedreader. Avere il proxy per recuperare quei feed regolarmente (ad esempio da un data center invece da casa o su un server invece di un laptop) ti consente di eseguire facilmente il feedreader solo allora e quando senza perdere gli elementi che sono stati pubblicati dopo che il tuo feedreader ha recuperato i feed l'ultima volta ma ruotato di nuovo prima di recuperarli la prossima volta.

Chiamo quel concetto un Proxy di feed semantico e ho implementato un'implementazione della prova del concetto chiamata sfp . Tuttavia non è molto più di una prova di concetto e non l'ho sviluppato ulteriormente. (Quindi sarei felice di suggerimenti a progetti con idee o scopi simili. :-)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.