<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)  編輯  收藏 所屬分類: 動態(tài)語言
        發(fā)現(xiàn)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數(shù)組中是一個一個的Atom:Entry對象,而這個Entry類并沒有我在模板文件中定義的link,取而代之的是一個links數(shù)組,links數(shù)組中的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的源碼,實在是夠爽,現(xiàn)在完整的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


    主站蜘蛛池模板: 日韩亚洲精品福利| 亚洲а∨天堂久久精品| 亚洲伊人久久大香线蕉AV| 国产精品久久久久久久久久免费| 亚洲精品无码av片| 国产精品亚洲二区在线观看| 久久国产高潮流白浆免费观看 | 亚洲国产a∨无码中文777| 最近免费中文字幕mv在线电影| 亚洲欧美日韩中文字幕在线一区| 亚洲AV无码乱码在线观看| 少妇无码一区二区三区免费| 亚洲av无码一区二区三区四区| 亚洲国产精品无码久久SM| 成人黄动漫画免费网站视频| 91国内免费在线视频| 亚洲小说图区综合在线| 亚洲综合无码精品一区二区三区| 国产一卡2卡3卡4卡2021免费观看 国产一卡2卡3卡4卡无卡免费视频 | 亚洲精品国产啊女成拍色拍| 超pen个人视频国产免费观看| 久99久精品免费视频热77| 亚洲精品国产精品| 亚洲AV无码乱码国产麻豆| 精品免费国产一区二区| 一级毛片成人免费看免费不卡| 美美女高清毛片视频黄的一免费| 久久精品国产亚洲AV嫖农村妇女| 亚洲国产成人a精品不卡在线| 日韩亚洲国产高清免费视频| 成人毛片100免费观看| 亚洲AV无码一区二区三区牲色 | 亚洲精品色婷婷在线影院| 欧亚精品一区三区免费| 久久久久国产免费| 日韩免费码中文在线观看| 亚洲videosbestsex日本| 亚洲va无码手机在线电影| 亚洲黄片毛片在线观看| 免费看美女让人桶尿口| 亚洲精品在线免费观看视频|