フォーチュンサモナーズ
«前の日記(2004-02-21) 最新 次の日記(2004-02-23)» 編集

Don'tStopMusic

2003|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|12|
2006|01|02|03|04|05|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|08|

カテゴリ別 2003年 | 2004年 | 2005年 | 2006年 | 2007年 | 2008年

知り合いサイト: よんだもの / 暴想 / Linuxでやる夫 / 新宿Vipper / 僕だけが幸せになればいいのに。


2004-02-22

_ [Ruby] はてなアンテナ2RSS このエントリーを含むブックマーク

RSS リーダーなしでは生きられない体となってしまった今日この頃、はてなアンテナも RSS リーダーで見れるといいなと思いました。ということで、MoonWolf さんの Nora を使って、はてなアンテナのデータから RSS を生成するプログラムを作ってみました。Nora 0.0.20040216 にある typo を直して使ってますので、それが直ったバージョンがリリースされたら、体裁整えて公開します。

RSS 生成プログラムの本体は以下の通りです。Web::Robot::Hatena::Antenna が Nora の Web::Agent を使って、はてなアンテナからデータを取ってくるロボットです。出力例

#!/usr/bin/env ruby
require 'rss/1.0'
require 'rss/dublincore'
require 'uconv'
require 'web/robot/hatena/antenna'
 
def antenna2rss(username, password)
  rss = RSS::RDF.new
  rss.encoding = 'UTF-8'
  rss.channel = RSS::RDF::Channel.new('http://dontstopmusic.no-ip.org/antenna/hatena.rdf')
  channel = rss.channel
  channel.title = Uconv.euctou8('星の下、空の上')
  channel.link = 'http://a.hatena.ne.jp/nuna/'
  channel.description = Uconv.euctou8('アンテナ')
  channel.dc_date = Time.now
  channel.items = RSS::RDF::Channel::Items.new
 
  robot = Web::Robot::Hatena::Antenna.new(username, password)
  robot.login
  robot.detail.each do |record|
    channel.items.Seq.li = RSS::RDF::Li.new(record.link)
    item = RSS::RDF::Item.new(record.link)
    item.title = Uconv.euctou8(record.title)
    item.link = record.link
    item.description = Uconv.euctou8(record.description)
    item.dc_date = record.date
    rss.item = item
  end
  rss
end
 
username = ARGV.shift
password = ARGV.shift
print antenna2rss(username, password)

追記

よく考えたら自分のアンテナだけに限定する必要はないですね。公開アンテナからデータを取るメソッドを追加します。

_ [メモ] はてなアンテナRSS このエントリーを含むブックマーク

ふと思い立って探したらすでにありました。うあーん。私の 3 時間を返してください。

[]

最近のコメント:

  1. だて (02-28)
  2. だて (02-28)
  3. hama☆log (02-28)

RSS
Creative Commons License
This work is licensed under a Creative Commons License
(note: text only. w/o web design, citations, (re)distributed softwares).