#!/usr/bin/env ruby
=begin
oohpml.rb does the bare minimum to make an OPML file out of URLs found in http://ooh.directory's new sites RSS feed.
1. Install the feedbag gem: `gem install feedbag` (you might need to use `sudo gem install feedbag` if you're using your system ruby
2. Download it.
3. `cd` to the directory you downloaded it to.
4. run it with `ruby ohhpml.rb`.
5. Import the resulting OPML file into your RSS reader, which hopefully will put it in the 'ooh' directory for you instead of messing up your carefully curated feeds.
=end
require 'rss'
require 'open-uri'
require 'feedbag'
require 'rexml/Document'
include REXML
# Where do we want to put the output?
path="ooh-directory.opml"
# Where do we find ooh.directory's new feeds?
url = 'https://ooh.directory/feeds/recently-added.xml'
# Taking the easy way out of constructing the initial OPML
feed_setup = <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<opml version="2.0">
<head>
<title>ooh Newest Feeds</title>
<dateCreated></dateCreated>
<dateModified></dateModified>
<ownerName>Mike Hall</ownerName>
<ownerEmail>mike@puddingtime.org</ownerEmail>
</head>
<body>
<outline text='ooh' title="ooh">
</outline>
</body>
</opml>
EOF
doc = Document.new feed_setup
# Read the RSS file from ooh.directory
URI.open(url) do |rss|
feed = RSS::Parser.parse(rss)
feed.items.each do |item|
folder = doc.root.get_elements('//outline').first
feeds = Feedbag.find item.link
feed_link = feeds[0]
feed = folder.push(Element.new('outline'))
feed.add_attribute('title', item.title)
feed.add_attributes({
'text' => item.title,
'title' => item.title,
'htmlURL' => item.link,
'xmlUrl' => feed_link,
'category' => 'oohDirectory'
})
end
end
# Write it all out to the path you set at the top of the script
File.open(path,"w") do |data|
doc.write(data)
end