Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
#!/usr/bin/env ruby # # Created by Steve Ivy on 2007-02-01. # Copyright (c) 2007. All rights reserved. require 'rubygems' require 'open-uri' require 'hpricot' require 'mofo' require 'pp' require 'active_support' class Feed def initialize(title, url, type) @title = title @url = url @type = type end attr_accessor :title attr_accessor :url attr_accessor :type end def get_doc(uri) begin doc = Hpricot open(uri) return doc rescue StandardError => poof puts "Error: #{poof}" end nil end def check_site(uri) doc= get_doc uri pfeeds=[] if doc links = doc/"link [@rel='alternate'][@type]" #returns Hpricot::Elements #pp links links.each do |link| if kind = link[:type][/(rss|atom)\+xml/i,1] kind.downcase! pfeeds << Feed.new(link[:title], link[:href], kind) end end end pfeeds end URL = ARGV[0] || 'http://redmonk.net/about-this-site' hcard = HCard.find(URL)[0] if (hcard) puts "Welcome #{hcard.fn}..." end puts "checking #{URL} for your other sites..." ###### # defunkt: # # I'd rather use mofo to do this: # # mes = XFN.find(URL).me # startdoc = get_doc URL rels = startdoc/"a [@rel]" urlstocheck=[] possiblefeeds=[] rels.each do |a| urlstocheck << a[:href] if a[:rel]=~/ ?me ?/ and a[:href]=~/http\:\/\// end urlstocheck.each do |u| puts "Checking #{u} for subscribable content" possiblefeeds.concat check_site(u) end if (hcard.nickname) puts " Good, I found nicknames: #{hcard.nickname.to_sentence }." puts "I'm going to each one as a username, and see if I can find anything interesting "+ "on some popular sites." SERVICES = { # use with sprintf "Del.icio.us" => "http://del.icio.us/%s", "Ma.gnolia" => "http://ma.gnolia.com/People/%s", "Flickr" => "http://flickr.com/photos/%s", "Last.fm" => "http://last.fm/user/%s/", #"Cork'd" => "http://corkd.com/people/%s/feeds" } hcard.nickname.each do |nick| SERVICES.each do |name, url| puts "Checking #{name}: #{url % nick} for subscribable content" possiblefeeds.concat check_site(url % nick) end end end puts " This what I found: " possiblefeeds.each_with_index do |feed, i| puts "[#{i+1}] #{URI(feed.url).host}: #{feed.title} (#{feed.url}, #{feed.type})" end
This paste will be private.
From the Design Piracy series on my blog: