#!/usr/bin/env ruby
require"rubygems"require'YAML'require'open-uri'# A flickr library for parsing YAML feeds from http://flickr.com
# USAGE: d = Flickr::YAML.new('kastner')
# d.photos.first.url
moduleFlickr# A Photo on the Flickr server
classPhotoattr_accessor:title, :url, :date, :url, :tagsdefinitialize(item)@title = item["title"]
@url = item["description"].match(/http:\/\/[\w\.\/]+_m\.jpg/)[0]
@date = item["date"]
@tags = item["tags"]
endend# Class for retriving a user_id from a username on flickr
classUserNamedefself.get_id(name)
page = open("http://flickr.com/photos/#{name}").read
page.match(/photos_public.gne\?id=([\w@]+)/)[1]
endend# Parses the YAML returned from flickr (in a feed) into a group of photos
classYAMLattr_reader:photosdefinitialize(username)@photos = []
uid = UserName.get_id(username)
url = "http://api.flickr.com/services/feeds/photos_public.gne?id=#{uid}&format=yaml"
data = open(url).read
parsed = ::YAML::load(data.gsub(/(\w): /, '\1 - '))
if parsed
parsed["items"].each do |item|
@photos << Photo.new(item)
endendendendend