Consummo
Consummo is an engine for consuming, enriching and producing pieces of content from RSS feeds.
Quick Start
# Create a Feed
feed = Feed.new(uri: "http://feedjira.com/blog/feed.xml")
# Produce Items from the feed
items = ItemProducer.new(feeds: [feed]).produce
# items => [SimpleItem, SimpleItem, SimpleItem]
# define our content enrichers
enrichers = [FacebookLikeEnricher.new]
# Consume items
enriched_items = ItemConsumer.new(items: items, enrichers: enrichers).consume
# enriched_items => [SimpleItem, SimpleItem, SimpleItem]Using with Rails
If you're using consummo with rails, you'll probably want to create ActiveRecord backed objects for:
FeedItemFeed
When producing and consuming FeedItems you'll probably want to persist them to a datastore when producing and/or consuming.
The Consummo Domain
Feeds
A Feed is a simple data structure that represents a URI feed. It has a uri attribute.
Feed Items
A Feed Item represents a singular piece of content produced from a Feed. It has attributes like title and url.
Producers
An Item Producer takes a list of Feeds along with a Fetcher and fetches items from the feed.
Consumers
An Item Consumer takes unenriched Feed Items and passes them through Item Enrichers.
Item Enricher
An Item Enricher enriches the details and data from a Feed Item. For example, the FacebookLikeEnricher will determine the number of Facebook Likes for a particular Feed Item (using the item's url) and add that attribute to the Feed Item.
The intent of Item Enrichers is that they are extensible and easy to implement such that multiple custom enrichments are possible.
Existing Enrichers
Working
| Name | Description | Class |
|---|---|---|
| Facebook Likes | Enriches the item with the current number of Facebook likes based on the items's URI
|
FacebookLikeEnricher |
| Readability | Enriches the item with the Flesch–Kincaid readability test score | ReadabilityEnricher |
| URL | Enriches the item with the true final URI by following all redirects | UrlEnricher |
| Keyword Hint | Enriches the item by wrapping any discovered keywords (passed in to the enrichment) with <strong> tags |
KeywordHintEnricher |
In Need of Updates
| Name | Description | Class | Needs |
|---|---|---|---|
| Twitter Shares | Enriches the item with the current number of twitter shares | TwitterShareEnricher |
Update to work with the Twitter v1.1 API |
Custom Enrichment
Enrichers follow a very simple interface:
class SimpleEnricher
def enrich(item)
{ "simple" => "enrichment" }
end
endAn Enricher should be able to enrich something that looks like an item (SimpleItem) and return a hash of key/value pairs.
Installation
Add this line to your application's Gemfile:
gem 'consummo'And then execute:
$ bundle
Or install it yourself as:
$ gem install consummo
Development
After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/clayton/consummo.
License
The gem is available as open source under the terms of the MIT License.