あんにんにっき。

日々思ったことや、おこったことを記録するブログ。要するに日記。

メモ。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)