Feed aggregator for Plone

hi there! in the project I'm currently working right now there's the need of showing content from different sites in all of them; the idea is something like this:

  • sites A, B and C have an "aggregator" object
  • user in site A creates some news items or events
  • user in site B creates some news items or events also
  • "aggregator" views in sites A, B and C show all news items or events created on any of them

we were discussing over here how to implement that: I was thinking on creating a content type providing the same interface as a collection; my content type could store a list of sources and will look for the information, caching the results for some time to trying to avoid issues.

the sources could be using our API or standard feeds; the information doesn't have to be replicated in all sites, we just need the title, description, link and, if possible, an image.

providing the collection interface will let me use the same standard templates and also drop this item in a collective.cover's collection tile.

I know that this distributed solution will not scale well, but right now we are thinking on only 5 sites.

does any body here has or had in the past a similar requirement? how did you solved it?

You can parse the RSS Feed of the Collections from A and B in C. I think you need only a BrowserView not a new Contenttype.

https://pypi.python.org/pypi/Products.feedfeeder/3.0.0 can aggregate from multiple site feeds. Instead of creating objects, you just collect the feeds. Works on Plone 5 too.

I need a content type because I want this to be completely editable and I may want to have more than one feed aggregator per site.[quote="yurj, post:3, topic:2682"]
Products.feedfeeder can aggregate from multiple site feeds.

thanks, I'll take a look at the implementation to see if it can help me; I'm not going to use it for 2 reasons: is Archetypes based and I need my content type to act as a collection to be able to use views and tiles with it.

I found many issues while trying to implement this that way, leading to this bug report:

I ended up with a simpler approach and now I have a working prototype that uses caching, profiling and multiprocessing:

1 Like