diff options
Diffstat (limited to 'rss.rb')
-rw-r--r-- | rss.rb | 61 |
1 files changed, 61 insertions, 0 deletions
@@ -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 |