aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Eilertsen <haraldei@anduin.net>2015-05-05 10:17:35 +0200
committerHarald Eilertsen <haraldei@anduin.net>2015-05-05 10:17:35 +0200
commitc5f5fcdb19c88d1d1bd27675adf181fdd1d49984 (patch)
tree8f0f115e4d8fbf2af4714b36a604579659497c5d
downloadrss2html-c5f5fcdb19c88d1d1bd27675adf181fdd1d49984.tar.gz
rss2html-c5f5fcdb19c88d1d1bd27675adf181fdd1d49984.tar.bz2
rss2html-c5f5fcdb19c88d1d1bd27675adf181fdd1d49984.zip
Let's get started.
-rw-r--r--Gemfile4
-rw-r--r--rss.rb61
2 files changed, 65 insertions, 0 deletions
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 %{<article>}
+ puts %{ <header>}
+ puts %{ <h1>#{item.title}</h1>}
+ puts %{ <section class="meta">Posted by #{item.author} at #{item.date}</section>}
+ puts %{ </header>}
+ puts %{ <section class="summary">#{item.summary}</summary>}
+ puts %{ <footer><a href="#{item.url}">Read more...</a></footer>}
+ puts %{</article>}
+ puts
+ end
+end