Written in Ruby this class reads an RSS feed and downloads the latest enclosure if it exists.
require 'rss/1.0'
require 'rss/2.0'
require 'open-uri'
require 'open-uri'
class Rssreader
def initialize(url)
source = url
content = ""
open(source) do |s| content = s.read end
@rss = RSS::Parser.parse(content, false)
end
def get_summary()
buffer = '['
for i in 0..2
buffer += @rss.items[i.to_i].title + ' | '
end
buffer.slice(0,buffer.length-3) + ']'
end
def enclosure?
@rss.items.to_s.scan('<enclosure').length > 0
end
def get_enclosure_url
enclosure = @rss.items[0].enclosure
enclosure.url
end
def rwget(url, filename)
file = File.new(filename, 'w')
file.puts open(url, 'User-Agent' => 'Ruby-wget').read
end
def download_enclosure()
if self.enclosure? then
enclosure_url = self.get_enclosure_url()
local_filename = File.basename(enclosure_url)
if not File.exist?(local_filename) then
puts 'downloading enclosure ...'
self.rwget(enclosure_url, local_filename)
puts 'download completed'
else
puts 'enclosure downloaded already'
end
end
end
end
if __FILE__ == $0
url = "http://mysite.com/gwd/feed/lugradio.rss"
rss = Rssreader.new(url)
puts rss.get_summary()
rss.download_enclosure()
end