`
chinapkw
  • 浏览: 111385 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

rss

阅读更多

通过BAIDU的快照看到这个文章的,原文章地址已经打不开了,只好转来,给更多的提供便利,应该是Sparkle写的,感谢一下~

用google搜索ruby制作rss的办法,搜了很久都找不到,这些年头,rss已经是很hot的字眼了,所以搜到了一堆提供rssruby网站,FT,我要找的是ruby怎么制作rss并且在rails中输出啊。后来终于知道怎么编写了,因此想把代码留下来造福大家,但是估计大家是不可能通过google搜索到这篇文章的了,看看有无有缘人能忽忽来到这里。

首先,我要说的是另一个解决方案,因为我想typo这个著名的blog程序里面应该会有rss输出的代码,于是下来看看。一看,typo果然聪明,因为rss本质是一个xml,所以typo就在controller里把需要的内容load出来,然后通过.rxml里面的xmlbuilder来自己一个一个写出来。呃??这样太偏门了吧。

接着下来就是我要介绍的方法。如果你还在网上寻找ruby处理rss的lib的话,看到这篇文章你就不用再去找了,因为Ruby本身就内置了rss的解释和输出的支持,并且是同时支持0.9x/1.0/2.0。

废话少来,直接上代码吧:

ruby 代码
  1. require 'rss/maker'  

 

ruby 代码
  1. def feed   
  2.      
  3. articles = Article.find :all:order => 'post_date DESC', :limit => 10   
  4.   feed = RSS::Maker.make("2.0"do |maker|   
  5.     maker.channel.title = "Gang of Technology"  
  6.     maker.channel.description = "Gang of Technology site"  
  7.     maker.channel.link = "http://up-u.com"    
  8.     maker.items.do_sort = true    
  9.     articles.each do |article|   
  10.       item = maker.items.new_item   
  11.       item.link = "http://up-u.com/archives/#{article.id}"  
  12.       item.title = article.title   
  13.       item.date = article.post_date   
  14.       item.description = Maruku.new(article.content).to_html   
  15.     end  
  16.   end  
  17.   send_data feed.to_s, :type => "application/rss+xml":disposition => 'inline'   
  18. end  

这是本网站的rss输出的真实代码,如果你熟悉rails的话,你一定能看得懂。不过我还是来稍稍点评一下,跟rss没什么关系的我就不说了:

  1. 首先是得require 'rss/maker'一下。
  2. make("2.0")的2.0是你要输出的rss的版本,支持的值有0.9、1.0、2.0。至于为什么用2.0,因为2.0是0.9的新版本,而其实1.0是另一家的,这个你得好好去搜一下它们的历史。
  3. maker.channel的title、description、link是三个必填的值,但是其实按照rss规范,description不是必须的,但是这里不填的话,maker会报错。
  4. maker.items.do_sort = true的意思是按照item的时间排一下序,不过其实我select出来的时候已经排好序了,其实要不要没有关系。
  5. 接下来就是item的生成了,调用item = maker.items.new_item
  6. rss规范里面item有好多个值,不过我这里只选了四个,其实只有link和title是必须的,date最好也输出,不然rss reader会把所有文章都当成是today,description我把全文输出了,因为我就是喜欢用rss reader看全文的人。
  7. 跟着就是rails的内容了,怎么把它发送出去呢,send_data就行了,这里需要注意的是senddata其实是接受string,但实际上你不传string也行,但是有不会想java那样自动调用toString一把,所以我们得显式转,不然会报错,我觉得是rails的设计问题,另外就是得指定mine type,至于:disposition => 'inline',因为senddata的默认就是会强制浏览器下载,这个得改一下。

另一种实现方法

ruby 代码
  1. xml.instruct! :xml:version=>"1.0"    
  2. xml.rss(:version=>"2.0"){   
  3.   xml.channel{   
  4.     xml.title("RSS")   
  5.     xml.link("http://")   
  6.     xml.description("description")   
  7.     xml.language("zh-cn")   
  8.     for opus in @opus  
  9.       xml.item do  
  10.         xml.title(opus.title)   
  11.         xml.description(opus.description)   
  12.         # rfc822   
  13.         xml.pubDate(opus.created_at.strftime("%a, %d %b %Y %H:%M:%S %z"))   
  14.         xml.link("url")   
  15.       end  
  16.     end  
  17.   }   
  18. }  
分享到:
评论

相关推荐

    RSS代码RSS 代码RSS 代码RSS 代码

    【标题】:“RSS代码解析与应用” 【描述】:“RSS(Really Simple Syndication)是一种用于发布和订阅信息的XML格式,它使得用户可以方便地获取网站的更新内容,如新闻、博客文章等。RSS代码是实现RSS订阅功能的...

    Rss插件-帝国CMS

    【Rss插件-帝国CMS】是专门为帝国内容管理系统(Empire CMS)设计的一款扩展功能插件,旨在增强系统对RSS(Really Simple Syndication)的支持。RSS是一种互联网内容发布格式,它允许用户订阅网站更新,无需频繁访问...

    一个基于新浪RSS的android RSS阅读器源码

    《基于新浪RSS的Android RSS阅读器源码解析与学习指南》 RSS(Really Simple Syndication)是一种内容聚合格式,常用于新闻、博客等网站,让用户能够方便地获取和订阅更新内容。在移动设备上,RSS阅读器应用是访问...

    phpcms rss调取内容,rss 全文输出怎么修改.doc

    【phpcms RSS全文输出修改详解】 在PHP CMS系统中,RSS(Really Simple Syndication)是一种标准,用于聚合网站内容,让订阅者通过RSS阅读器获取更新。然而,默认情况下,phpcms的RSS功能可能只提供文章的摘要,而...

    java实现rss的发布和订阅

    RSS(Really Simple Syndication)是一种基于XML的网络内容聚合格式,它允许用户通过RSS阅读器或聚合器获取网站的更新信息,如新闻、博客文章等。在Java中实现RSS的发布和订阅,需要理解RSS的结构以及如何使用Java...

    MFC编写的RSS简单阅读器

    标题 "MFC编写的RSS简单阅读器" 涉及的知识点主要集中在使用Microsoft Foundation Class (MFC) 库来开发一个简单的RSS阅读器应用程序。MFC是微软为Windows平台提供的一个C++类库,它封装了Windows API,使得开发者...

    提交RSS工具英文站RSS提交,英文站RSS提交

    标题中的“提交RSS工具英文站RSS提交,英文站RSS提交”和描述中的“提交RSS工具搜索引擎的RSS方式的提交提交RSS工具”都指向了一个主题,即利用RSS(Really Simple Syndication)工具向英文网站和搜索引擎提交RSS ...

    C# RSS阅读器 能添加和阅读订阅

    C# RSS阅读器是一款基于C#编程语言开发的应用程序,专为用户管理和阅读RSS(Really Simple Syndication)订阅而设计。RSS是一种XML格式,用于发布新闻、博客和其他定期更新的内容,使得用户可以方便地获取并聚合来自...

    Rss全国各省市天气预报

    【Rss全国各省市天气预报】项目是一个利用RSS(Really Simple Syndication)技术获取并解析全国各地天气信息的应用。RSS是一种基于XML的格式,用于发布和订阅新闻、博客、天气等实时信息,使得用户能轻松地获取和...

    RSS是RSS的jar包

    RSS(Really Simple Syndication)是一种基于XML的网络内容发布协议,它允许网站提供自己的新闻提要,以便用户可以通过RSS阅读器订阅和获取更新。在这个压缩包中,包含了一系列与Java实现RSS相关的库和源代码,这将...

    rss,RSS开发过程

    【RSS技术概述】 RSS,全称“Really Simple Syndication”,是一种基于XML的互联网内容发布技术。它的主要目的是简化网站内容的聚合和分发,让用户能够更便捷地获取和跟踪感兴趣的信息源,比如新闻、博客文章等。...

    RSS DEMO 支持RSS定阅

    【RSS模型】 RSS,全称Really Simple Syndication(真正简单的聚合),是一种用于发布和获取网站内容的标准化格式。它允许用户通过订阅RSS feed来跟踪更新,无需频繁地访问各个网站。RSS订阅使得新闻、博客文章和...

    Ultimate Reader(Rss Reader)Rss阅读器

    Ultimate Reader——Our Own Rss Reader 随着越来越多的Web站点对RSS的支持,RSS已经成为目前最成功的XML应用。RSS搭建了一个信息迅速传播的技术平台,使得每个人都成为潜在的信息提供和获取者。在知识爆炸的当今...

    常用Rss,生成解析Rss,

    RSS(Really Simple Syndication)是一种基于XML的网络内容发布协议,它使得用户能够轻松地获取网站的更新信息,如新闻、博客文章等。RSS通过订阅(subscribe)和发布(publish)的方式,允许用户无需直接访问网站就...

    ad-rss-lib-1.1.0.tar.gz

    标题中的"ad-rss-lib-1.1.0.tar.gz"是一个开源库的压缩包,版本号为1.1.0,格式为tar.gz。在IT行业中,这种格式通常是Linux或Unix系统中用来打包和压缩文件的常见方式。tar命令用于打包多个文件和目录到一个单一的...

    RSS Announcer(国外RSS推广)

    RSS Announcer是一款专门针对国外市场设计的RSS推广工具,它为用户提供了一种高效的方式来分发和宣传他们的RSS(Really Simple Syndication) feed,以扩大在线影响力和吸引更多的读者。RSS是一种标准格式,允许用户...

    新浪RSS 阅读器 android源码

    新浪RSS阅读器是一款基于Android平台的应用程序,它允许用户订阅并阅读来自新浪的RSS新闻源。源码分析有助于开发者理解RSS订阅和解析的过程,以及如何在Android环境下构建一个功能完善的新闻阅读应用。以下是对该...

    使用RSS订阅喜欢的bilibiliup主和番剧

    在IT行业中,RSS(Really Simple Syndication)是一种广泛使用的数据格式,它允许用户订阅并获取网站更新,无需频繁地手动检查。在这个场景中,我们关注的是如何利用RSS订阅B站(哔哩哔哩,bilibili)上的UP主(内容...

    Node.js-使用RSS分类订阅稀土掘金

    标题 "Node.js-使用RSS分类订阅稀土掘金" 指出我们将探讨如何利用Node.js技术来构建一个RSS订阅系统,特别关注于稀土掘金(Juejin)这个平台的特定分类内容。RSS(Really Simple Syndication)是一种内容发布协议,...

    室内定位RSS位置指纹法-KNN(代码与数据),RSS指纹,matlab

    RSS(Received Signal Strength,接收到的信号强度)位置指纹法是其中一种常用且有效的定位策略。本压缩包文件提供了关于RSS指纹定位的实现,采用KNN(K-Nearest Neighbors,K近邻算法)作为核心算法,并使用MATLAB...

Global site tag (gtag.js) - Google Analytics