2017-05

Latest Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

複数のRSSをまとめるCGI

mixiに外部RSSを登録する際に複数のRSSをまとめたRSSを作る要求があって、いくつかのサービスを使ってきたが、はてなRSSは時系列に並ばず、FEMiXはいつの間にか消滅しており、mixfeedは最近信用できなくなってきた(更新が遅いのは許せるとして、特定のアイテムがいつまでも取得されない)。
なので自分で作ることにした。
参考文献:技術/RubyでRSS

RSS ParserがRubyに標準で付いてるんよな。テレビ番組etc.のRSSを作った後で知ったんよ。・・・楽勝やん。時系列で並べ替えるのも一発。最初からこれを使っていれば・・・。
できあがったものがこちら:http://worris.sakura.ne.jp/rssmixer.cgi

#!/usr/local/bin/ruby

require 'rss/1.0'
require 'open-uri'
require 'rss/dublincore'
require 'rss/maker'

class RssSite
attr_accessor:url
attr_accessor:content
attr_accessor:rss

def initialize(url)
@url = url
end

def get()
@content = ""
open(url) {|u|
@content = u.read
}

parse()
end

def parse()
begin
@rss = RSS::Parser::parse(content)
rescue RSS::InvalidRSSError
@rss = RSS::Parser::parse(content,false)
end
end

def save(file)
File.open(file,'w') {|f|
f.print(@content)
}
end
end

rss=Array.new

orig_rss=["http://f.hatena.ne.jp/worris/rss","http://worris.blog61.fc2.com/?xml"]

orig_rss.each do |uri|
r=RssSite.new(uri)
r.get.items.each do |rr|
rss << rr
end
end

new_rss = RSS::Maker.make("1.0") do |maker|

maker.channel.about = "http://worris.sakura.ne.jp/index.html"
maker.channel.title = "worris'"
maker.channel.description = "worris' RSS"
maker.channel.link = "http://worris.sakura.ne.jp/index.html"

maker.items.do_sort = true

rss.each do |r|
item = maker.items.new_item
item.title = r.title
item.link = r.link
item.description = r.description
item.content_encoded = r.content_encoded
item.dc_date = r.dc_date
end

end

print "Content-type: application/xml\n"
print "Pragma: no-cache\n"
print "Cache-Control: no-cache\n"
print "Expires: Thu, 01 Dec 1994 16:00:00 GMT\n\n"
puts new_rss

スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ

トラックバック

http://worris.blog61.fc2.com/tb.php/16-528ce5ca

この記事にトラックバックする(FC2ブログユーザー)

複数のRSSをまとめるCGIスクリプト

本サイトはいくつかのブログから構成されているため、複数のブログのRSSをまとめて...

«  | HOME |  »

移転しました。

ブログ引っ越しました。
無用の科学あるいは錬金術

 

株価情報

 

最近の記事

最近のコメント

 

最近のトラックバック

月別アーカイブ

カテゴリー

RSSフィード

ブログ内検索

 

なかのひと

 

ヘビーローテーション

 

 

リンク

広告

 

 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。