<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: podcatcher code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Thu, 21 Aug 2008 12:18:16 GMT</pubDate>
    <description>DZone Snippets: podcatcher code</description>
    <item>
      <title>A simple RSS Reader and Podcatcher</title>
      <link>http://snippets.dzone.com/posts/show/4713</link>
      <description>Written in Ruby this class reads an RSS feed and downloads the latest enclosure if it exists.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;require 'rss/1.0'&lt;br /&gt;require 'rss/2.0'&lt;br /&gt;require 'open-uri'&lt;br /&gt;require 'open-uri'&lt;br /&gt;&lt;br /&gt;class Rssreader&lt;br /&gt;  def initialize(url)&lt;br /&gt;    source = url # url or local file&lt;br /&gt;    content = "" # raw content of rss feed will be loaded here&lt;br /&gt;    open(source) do |s| content = s.read end&lt;br /&gt;    @rss = RSS::Parser.parse(content, false)&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  # returns the first 3 titles from the rss feed&lt;br /&gt;  def get_summary()&lt;br /&gt;    buffer = '['&lt;br /&gt;    for i in 0..2&lt;br /&gt;      buffer += @rss.items[i.to_i].title + ' | '&lt;br /&gt;    end      &lt;br /&gt;    buffer.slice(0,buffer.length-3) + ']'&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def enclosure?&lt;br /&gt;    @rss.items.to_s.scan('&lt;enclosure').length &gt; 0&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def get_enclosure_url&lt;br /&gt;    enclosure = @rss.items[0].enclosure&lt;br /&gt;    enclosure.url&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def rwget(url, filename)&lt;br /&gt;    file = File.new(filename, 'w')&lt;br /&gt;    file.puts open(url, 'User-Agent' =&gt; 'Ruby-wget').read&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def download_enclosure()&lt;br /&gt;    if self.enclosure? then&lt;br /&gt;      enclosure_url = self.get_enclosure_url()&lt;br /&gt;      local_filename = File.basename(enclosure_url)&lt;br /&gt;      #puts local_filename&lt;br /&gt;      if not File.exist?(local_filename) then&lt;br /&gt;        puts 'downloading enclosure ...'&lt;br /&gt;        self.rwget(enclosure_url, local_filename)&lt;br /&gt;        puts 'download completed'&lt;br /&gt;      else&lt;br /&gt;        puts 'enclosure downloaded already'&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;  end    &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;if __FILE__ == $0&lt;br /&gt;  url = "http://mysite.com/gwd/feed/lugradio.rss"&lt;br /&gt;  rss = Rssreader.new(url)&lt;br /&gt;  puts rss.get_summary()&lt;br /&gt;  rss.download_enclosure()&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 29 Oct 2007 23:28:18 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4713</guid>
      <author>jrobertson (James Robertson)</author>
    </item>
  </channel>
</rss>
