メモ。RSSを出力してみる。
今日はXML(というかRSS)の出力の実験をやっていた。
参考にしたのは(というかほぼ丸写しなんですけど)はこちら
http://kazuhiro.ty.land.to/blog/2007/01/rubyrss.html
やったこと。
指定したURLから、twitterのURLを抜き出して、リストにする。(getTwitterIdList)
で、URL文字列のリストからRSSへ変換(makeRss)。
最初は、XMLの生成(require 'rexml/document')を使ってRSSを行おうと思ったのだけれども、RSSって単なるXMLと違うんですね。知らんかった。
require 'rubygems' require 'hpricot' require 'open-uri' require 'json/objects' require 'net/http' require 'rss/maker' def getTwitterIdList(url) doc = Hpricot(open(url)) urllist=[] #([0-9a-zA-Z_]*)ってのが、screen_idの正規表現、のはず。 reg = /http:\/\/twitter.com\/([0-9a-zA-Z_]*)/ #aタグのhref要素を抜き出して配列に入れていく。 (doc/'a').each {|elem| if elem.to_s =~ reg urllist.push(elem.attributes['href']) end } #重複分を排除。 urllist.uniq end def makeRss(urllist) rss = RSS::Maker.make("1.0") do |maker| #この辺は、ヘッダ情報っぽい。 xss = maker.xml_stylesheets.new_xml_stylesheet maker.channel.about = "localhost/screen_names.xml" maker.channel.title = "test title" maker.channel.description = "test" maker.channel.link = "localhost" #個別のItemは items.new_item で生成して、プロパティをセットしていってるっぽい。 urllist.each do |url| item = maker.items.new_item item.link = url item.title = url.split('/')[-1] end end puts rss.to_s end list = getTwitterIdList("http://twitter.g.hatena.ne.jp/keyword/%E3%83%8F%E3%82%A4%E3%83%87%E3%83%95%E3%81%A4%E3%81%84%E3%81%A3%E3%81%9F%E3%83%BC360") makeRss(list)