改了下rss-reader,支持atom了
2023-03-14 10:13:44 时间
发现gigix新的blog是支持atom的,也让这个小工具支持下atom,去rubyforge找了圈,有个叫atom的lib简单易用,就选他了。
首先,gem install atom,安装一下
其次,稍微修改下代码:
首先,gem install atom,安装一下
其次,稍微修改下代码:
def blog_info(url)
str=open(url).read
feed = RSS::Parser.parse(str, false)
unless feed
feed=Atom::Feed.new(str)
blog=Blog.new(feed.title,url,feed.entries)
else
blog=Blog.new(feed.channel.title,url,feed.items)
end
end
先尝试用RSS模块去读,失败的话就用Atom模块,运行下,问题出来了,这个atom lib的entries数组中是一个一个的Atom:Entry对象,而这个Entry类并没有我在模板文件中定义的link,取而代之的是一个links数组,links数组中的Link对象href属性才是我想要的,那么,修改模板文件?或者修改atom lib的源码?No,No,都不用,ruby天然的open class特性让你随心所欲,我们打开Atom:Entry类,给它添加个link方法就OK:str=open(url).read
feed = RSS::Parser.parse(str, false)
unless feed
feed=Atom::Feed.new(str)
blog=Blog.new(feed.title,url,feed.entries)
else
blog=Blog.new(feed.channel.title,url,feed.items)
end
end
class Atom::Entry
def link
links[0].href
end
end
这样一来,模板文件也不用改了,更不用去修改atom lib的源码,实在是够爽,现在完整的rss-reader是这样:def link
links[0].href
end
end
require 'rss/2.0'
require 'open-uri'
require 'erb'
require 'atom'
# author dennis
# email killme2008@gmail.com
class Atom::Entry
def link
links[0].href
end
end
class Blog
attr_accessor:title,:url,:items
def initialize(title,url,items=[])
@title=title
@url=url
@items=items
end
end
def blog_info(url)
str=open(url).read
feed = RSS::Parser.parse(str, false)
unless feed
feed=Atom::Feed.new(str)
blog=Blog.new(feed.title,url,feed.entries)
else
blog=Blog.new(feed.channel.title,url,feed.items)
end
end
def rss_read
urls=['http://www.blogjava.net/canonical/rss','http://dreamhead.blogbus.com/index.rdf',
'http://michael.nona.name/rss','http://blog.csdn.net/mozilla/Rss.aspx','http://blog.csdn.net/g9yuayon/Rss.aspx']
urls.collect do |blog_url|
blog_info(blog_url)
end
end
if $0==__FILE__
blogs=rss_read()
#读取模板文件
template=IO.read(File.dirname(__FILE__)+"/blogs.html")
message=ERB.new(template)
#输出结果文件
File.open("today.html","w+"){|file| file.puts message.result}
end
require 'open-uri'
require 'erb'
require 'atom'
# author dennis
# email killme2008@gmail.com
class Atom::Entry
def link
links[0].href
end
end
class Blog
attr_accessor:title,:url,:items
def initialize(title,url,items=[])
@title=title
@url=url
@items=items
end
end
def blog_info(url)
str=open(url).read
feed = RSS::Parser.parse(str, false)
unless feed
feed=Atom::Feed.new(str)
blog=Blog.new(feed.title,url,feed.entries)
else
blog=Blog.new(feed.channel.title,url,feed.items)
end
end
def rss_read
urls=['http://www.blogjava.net/canonical/rss','http://dreamhead.blogbus.com/index.rdf',
'http://michael.nona.name/rss','http://blog.csdn.net/mozilla/Rss.aspx','http://blog.csdn.net/g9yuayon/Rss.aspx']
urls.collect do |blog_url|
blog_info(blog_url)
end
end
if $0==__FILE__
blogs=rss_read()
#读取模板文件
template=IO.read(File.dirname(__FILE__)+"/blogs.html")
message=ERB.new(template)
#输出结果文件
File.open("today.html","w+"){|file| file.puts message.result}
end
文章转自庄周梦蝶 ,原文发布时间2007-07-11
相关文章
- 末位淘汰,京东人事大调整;马斯克要求程序员写周报;31 省平均工资发布 | EA周报
- 谁来背锅?PageHelper自动加入Limit ?
- RASP的安全攻防研究实践
- 字节辟谣被裁员工与HR互殴;传小米首款车26万起;李斌发全员信细数蔚来8大问题 | EA周报
- 面试官亲述 | 如何优雅地介绍自己的项目经历
- 被体制化是失业的起点
- 【亲测有效】Python+IDM多线程加速批量下载ERA5数据
- 一个35岁技术经理的忠告:在职场多点雷霆手段,少点菩萨心肠!
- 清华应届硕士炮轰字节恶意开低薪
- 2022皆为过往,2023平安健康
- Hackcity 参赛须知 Q&A
- 无限扩展的像素动画宇宙 #Floor796 是共创元宇宙的理想形态吗?
- 破防了,今年在牛客浏览了3000条帖子,焦虑已经溢出屏幕了
- 他连拉 shi 都不会,凭什么取代人类
- 首个元宇宙国家?!# Tuvalu
- 面试官亲述|如何优雅地介绍自己的项目经历?
- 138元每月,人生搜索引擎正式上线 # Rewind
- 吴恩达的2022年终AI大事件盘点
- 每天产生新想法的系统
- 游戏玩家如何沉浸式体验交互竞技场? #ArenaVerse