Domanda

Sto pensando di scrivere un demone per scorrere i feed e quindi aggiungerli al database come oggetti ActiveRecord.

In primo luogo, un problema che sto affrontando è che non riesco a recuperare in modo affidabile l'autore / utente di una storia usando la gemma del normalizzatore di feed. Sembra che alcune volte non riconosca il tag (non so se qualcun altro ha affrontato questo problema).

In secondo luogo, non ho visto nessuno convertire i feed RSS in voci di database. Devo farlo poiché ogni voce avrà associazioni con altri oggetti ActiveRecord. Non riesco a trovare gemme per farlo in modo specifico, ma potrei in qualche modo hackerare qualcosa come act_as_feed per farlo?

È stato utile?

Soluzione

Non utilizzare SimpleRSS. Non decodificherà le entità HTML per te e occasionalmente ignora la struttura del feed.

Ho trovato più semplice analizzare il feed come XML con XMLSimple , ma puoi usa qualsiasi parser XML.

Altri suggerimenti

SimpleRSS espone un'API molto semplice e funziona abbastanza bene sulla maggior parte dei feed. Consiglio di non considerare l'implementazione come "parser" è un mucchio di regex (che è così sbagliato su così tanti livelli), ma funziona bene.

Daemon è un buon gioiello per eseguirlo in background.

Se si utilizza il record attivo, è necessario seguire le istruzioni per l'uso di AR al di fuori delle rotaie e quindi definire in linea le classi del modello. Ciò ridurrà un po 'il gonfiore.

I feed RSS sono piuttosto incoerenti, questa è la caduta che usiamo

  date = i[:pubDate] || i[:published] || i[:updated]
  body = i[:description] || i[:content] || i[:summary] || ""
  url = i[:guid] || i[:link]

Inoltre, per esperienza, assicurati di provare a salvare tutto (e ricorda che i timeout non vengono catturati dal normale salvataggio). Fa schifo dover rimbalzare costantemente daemon RSS che ottengono dati errati.

L'approccio migliore è utilizzare un motore Rails collegato a un API feed come Superfeedr . Il polling dei feed RSS implica la necessità di eseguire i propri lavoratori asincroni e / o un sistema di coda che può essere abbastanza complesso per costruire e mantenere gli straordinari. Dovrai anche gestire centinaia di formati e incoerenze. Ecco un post sul blog che mostra come utilizzare i feed RSS in un'applicazione Rails .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top