<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    改了下rss-reader,支持atom了

    Posted on 2007-07-11 16:50 dennis 閱讀(476) 評論(0)  編輯  收藏 所屬分類: 動態語言
        發現gigix新的blog是支持atom的,也讓這個小工具支持下atom,去rubyforge找了圈,有個叫atom的lib簡單易用,就選他了。
        首先,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:
    class Atom::Entry
      def 
    link
        links[
    0].href
      end
    end
    這樣一來,模板文件也不用改了,更不用去修改atom lib的源碼,實在是夠爽,現在完整的rss-reader是這樣:
    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://m.tkk7.com/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


    主站蜘蛛池模板: 37pao成人国产永久免费视频| 中文在线观看免费网站| 100000免费啪啪18免进| 久久精品蜜芽亚洲国产AV| 久久精品国产免费| 亚洲精品午夜久久久伊人| 亚洲一区二区三区免费观看| 亚洲人成网站在线观看播放青青 | 久久一区二区免费播放| 亚洲国产日韩成人综合天堂| 成人a毛片免费视频观看| 亚洲熟妇无码AV在线播放 | 久久99国产乱子伦精品免费| 亚洲丰满熟女一区二区v| 日本无吗免费一二区| 免费在线观看自拍性爱视频| 伊人久久亚洲综合| 午夜视频在线免费观看| 国产成人精品亚洲日本在线| 国产成人免费ā片在线观看| 日本高清不卡中文字幕免费| 亚洲AV无码精品色午夜在线观看| 99视频免费播放| 亚洲经典千人经典日产| AV在线亚洲男人的天堂| 久久福利青草精品资源站免费 | 亚洲一本一道一区二区三区| 国产一区二区三区无码免费| a级毛片视频免费观看| 亚洲三级视频在线| 免费中文字幕在线观看| 久久久久久影院久久久久免费精品国产小说 | 久久亚洲精品国产精品| 国产美女精品久久久久久久免费| 国产黄在线播放免费观看| 亚洲高清日韩精品第一区| 亚洲国产午夜中文字幕精品黄网站 | 黄页网站在线观看免费高清| 特级做a爰片毛片免费看| 亚洲国产高清视频在线观看| 免费一级毛片在线观看|