2008年 07月 14日

ゆの まとめ用スクリプト

ブクマからキーワードページのテーブルにするやつ

require "rubygems"
require "mechanize"
require "active_support"
require "time"

@ua = WWW::Mechanize.new

puts "|*言語|*リンク|"
begin
	results = []

	uri = "http://b.hatena.ne.jp/cho45/atomfeed?tag=%E3%82%86%E3%81%AE%20in%20language"
	loop do
		begin
			warn uri
			@ua.get uri
			doc = XmlSimple.xml_in(@ua.page.body)
			raise "Bug?" unless doc["entry"]

			results.concat doc["entry"]

			next_link = doc["link"].find {|link| link["rel"] == "next" }
			break unless next_link
			uri = next_link["href"]
		rescue RuntimeError
			sleep 1
			retry
		end
	end

	results.map! {|entry|
		entry.update("lang" => entry["subject"] - ["ゆの", "language", "ゆの in language", "ひだまりスケッチ"])
	}

	results = results.sort_by {|entry| [entry["lang"], entry["issued"]] }.map { |entry|
		warn entry["subject"].inspect
		"|%s|[%s:title]|" % [
			entry["lang"],
			entry["link"].find {|link| link["rel"] == "related" }["href"],
		]
	}

	raise "Bug?" if results.uniq!
rescue RuntimeError
	sleep 1
	retry
end
puts results

なんかちゃんとフィードがとれないことがあるのでチェックかけてリトライしてる。