From c5f5fcdb19c88d1d1bd27675adf181fdd1d49984 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Tue, 5 May 2015 10:17:35 +0200 Subject: Let's get started. --- Gemfile | 4 ++++ rss.rb | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 Gemfile create mode 100644 rss.rb diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..0286745 --- /dev/null +++ b/Gemfile @@ -0,0 +1,4 @@ +# A sample Gemfile +source "https://rubygems.org" + +gem 'pry' diff --git a/rss.rb b/rss.rb new file mode 100644 index 0000000..2c75648 --- /dev/null +++ b/rss.rb @@ -0,0 +1,61 @@ +require 'rss' +require 'open-uri' +require 'yaml' + + +class Item + attr_reader :title, :author, :date, :summary, :url + + def initialize(item) + @title = item.title.content + @author = item.author.name.content + @date = item.updated.content + @summary = item.summary.content.strip + @url = item.link.href + end +end + + +class Feed + attr_reader :title, :url, :items + + def initialize(title, args) + @title, @url = title, args['url'] + @items = [] + slurp + end + + private + + def slurp + open(url) do |rss| + feed = RSS::Parser.parse(rss) + + feed.entries.each do |item| + add Item.new(item) + end + end + end + + def add(item) + @items << item + end +end + +feeds = YAML.load(IO.read('feeds.yml')) +items = [] + +feeds.each do |t, f| + feed = Feed.new(t, f) + feed.items.each do |item| + puts %{
} + puts %{
} + puts %{

#{item.title}

} + puts %{
Posted by #{item.author} at #{item.date}
} + puts %{
} + puts %{
#{item.summary}} + puts %{ } + puts %{
} + puts + end +end -- cgit v1.2.3