[翻译]Popfly系列课程9–你的新闻,小工具与在线踪迹:在Popfly中制作RSS源Mashup

 

   

RSS(简单聚合)是使博文共享,播客,新闻头条与网上其它内容所使用的底层技术。在本课中,你将创建Popfly mashup来创建一个web小工具来显示RSS源,你讲学习定位包含你在流行的社交网站上的动态信息的RSS源,并将它们合并到你在线状态的“跟踪”信息你将合并并过滤热门话题的RSS源以便只显示那些你感兴趣的项目。

你的新闻,小工具与在线踪迹:在Popfly中制作RSSMashup

本课的Professor Popfly Mashups参考:

 

    

l  ProfPopflyRSSFeed http://www.popfly.com/users/professorpopfly/ProfPopflyRSSFeed

l  MyFriendFeed http://www.popfly.com/users/professorpopfly/MyFriendFeed

l  NewsFilter http://www.popfly.com/users/professorpopfly/NewsFilter

l  Ask A Ninja Podcast http://www.popfly.com/users/professorpopfly/AskANinja

image

学习目标

 

完成本课学习后,你将可以:

l  描述一个RSS源中包含的数据

l  辨别一个网站上RSS源的源文件

l  描述RSS源与博客的关系

l  创建合并,排序及过滤RSS源的mashup

l  使用TextAppender块连接字符串来构造RSS源的URL

l  解释一个用于排序的日期被作为字符串数据使用时发生的问题

l  使用ConditionBuilder来创建用于过滤RSS源的条件

概览:什么是RSS

 

         RSS(简单聚合)是使博文共享,播客,新闻头条与网上其它内容所使用的底层技术。由Dave Winer1997年开发,最早作为将新闻条目存储为XML格式以供其scripting.com网站使用的数据流的工具,现在RSS已发展为将内容发布为其它网站可以订阅的内容的标准。除新闻头条外,当今的聚合内容起也源于博客帖子,播客,股票行情,facebookflick更新等等。下方展示的橙色的图标表示一个RRS源。

image

在本课中你将创建3个与RSS源交互的Popfly mashup:在第一个示例中,你讲创建一个web小工具来显示RSS源。在第二个例子中,你将学习定位包含你在流行的社交网站上的动态信息的RSS源,并将它们合并到你在线状态的“跟踪”信息;第三个例子中,你将合并并过滤热门话题的RSS源以便只显示那些你感兴趣的项目。

练习同样探索了RSS源与播客之间的关系;最后一个练习描述了怎样创建一个播放视频播客的mashup

订阅RSS

 

         RSS源使用XML来发布频繁更新的web内容。通过提供RSS源的URL给一个聚合程序,聚合程序将周期性检查源是否有任何新项目并显示新项目。这个过程将许多不同的web站点的数据收集到一起,并显示所有的新项目。

         要订阅一个RSS源,将其地址提供给一个聚合程序,聚合程序周期性检查源并在新内容被发布后更新。现在这样的聚合功能已成为像Internet Explorer(在工具栏中找到RSS图标,点击它即可以查看当前页面的源)与通过活动书签实现此功能的Firefox这些版本浏览器的标准配备。

         一个RSS源包括了描述源中每一项的标题,作者,发布日期,描述与超链接的XML标签的基本集合。顺便说,要注意播客内容是RSS的一个扩展:一个播客的RSS源包含了附加的闭合标签来描述多媒体内容的统一资源定位符(url),多媒体的长度及内容类型(视频或音频)。最后一个练习探索了与播客RSS源的交互。

image

深入了解RSS源的内部

 

         Popfly团队的bloghttp://popflyteam.spaces.live.com/;你可以点击在页面工具菜单下方“订阅源”来查看其RSS源。博客相应的RSS源的URLhttp://popflyteam.spaces.live.com/feed.rss

         通过查看页面源文件可以看到RSS源的底层XML。将这些文本粘贴到一个类似Visual Studio Express这种的编辑器以更好的显示相关联的标签。下面的截图展示了Popfly团队blogRSS。为更清晰的展示,一些项目与不常用的标签被忽略。

image

         注意每一个RSS源,无论其描述的是博客文章,del.icio.us的标签或你在flickr上发布的最新的照片,都(至少)包含<rss>, <channel>, <item>, <title>, <link>,  <description>, <pubDate>等标签。这些事最常见的;RSS规范也允许其它一些标签来标记内容适当的信息。因为RSS源有着同样的标签与结构,合并与处理RSS源非常容易。要查看RSS块输出的值,将RSS块连接到Popfly中另一个块,并指定来自RSS块作为输入。

         RSS源是用于mashup的有用的信息来源,因为它们很容易合并它们,或更进一步由每个项的标题或描述来提取信息。

示例1:创建一个Web工具来显示RSS源项目

 

         讲述XML那课通过演示怎样创建一个mashup来显示RSS源介绍了RSS。这个mashup使用RSS块由指定的RSS源获取项目,RSSList块使用交互,动态的方式显示这些项目。选择RSS块的getItems操作,输入你的Popfly mashup(或其他)RSS源的URL。可以通过点击你的Popfly项目页的RSS图标找到你的Popfly mashupRSS源。这个URL的格式为 http://www.popfly.com/users/yourPopflyUserName/projects.rss  yourPopflyUserName为你的Popfly的用户名。

image

         RSS块连接到一个RSSList块,来创建一个有趣的RSS列表显示效果。如果你喜欢可以给RSSList自定义一种颜色。

image

         在你点击Play预览mashup之前,点击其扳手查看RSSList块的内部。注意下拉列表中的项目正是那些RSS源输出的项目。

         本课结尾处第一个练习指导你构建这个mashup的过程并将其作为一个小工具嵌入到你的网页中。

示例2:你的在线踪迹:合并关于你的RSS

 

         Friendfeed.com (http://www.friendfeed.com)是一个合并来自流行社交网站RSS源的聚合程序。每次你上传一张照片到flickr或一个视频到YouTube,在博客中发布一篇博文,向twitter发送一条消息,在del.icio.us中添加一个书签,或更新Linked In中的个人信息,所有这些事物都会被记录到相应网站的数据库中。用户可以查询这些数据库并获得RSS源格式的在相关网站的近期活动的结果。如果某人知道你在每个网站的登录名,他们就可能访问你留下的信息的踪迹。

image

         Friendfeed允许你注册你参与的网站,然后合并所有它们的RSS源到一个单独的列表,此列表绘制了一个你的在线兴趣与活动的更完整的图画。

         这个例子描述了怎样构建一个如FriendFeed这样功能的mashup,来合并你感兴趣的RSS源的数据。

         查找上面展示的社交网站中你参与的23个的RSS源,或者查找包含你感兴趣的新闻,图片或视频的RSS源。

这个例子合并来自三个不同RSS源的关于Popfly的数据:

l  http://www.youtube.com/rss/user/MicrosoftPopfly/videos.rss    (MicrosoftPopfly发布在YouTube的视频)

l  http://api.flickr.com/services/feeds/photos_public.gne?tags=popfly&lang=en-us&format=rss_200 (近期上传到Flickr标有popfly标签的内容)

l  http://feeds.technorati.com/search/popfly?authority=a4&language=en  (Technorati博客搜索中关于Popfly的内容)

image

         要构造这个mashup,选择这三个RSS块每一个的getItems操作并输入要访问的一个RSS源的名称;将每一个RSS块连接到一个Combine块,选择每一个RSS的源的完整完整的RSSItem对象。使用RssDateSort块将合并的项目按时间倒序排序(这样最新的项目将出现在列表的顶部。)最后,将结果连接到StevesTableWithHotFirstColumn,一个用户提供的块,来将数据展示为一个HTML表格,其中第一列是指向实际内容的链接。

image

注意:

l  StevesTableWithHotFirstColumn就像Table块,除了它包含一个操作来输出一个简单的3列表格,其中第一列带有超链接(URL)

l  这里你无法使用Sort块对RSS源基于publishedDate这个值排序。Sort块将把日期作为字符串而非日期来处理,所以这个序列不是你想要的。Friday将始终在Thursday前面,试一下!

l  此处也不可以使用TableDisplay块,因为其总是将每一个列的值排序,并且不知道将日期列作为日期处理。同样的问题又发生了。

l  如果你移除到StevesTableWithHotFirstColumn块的连接,你将看到每个源返回的原始数据。例如,ListOfLinks不会显示来自Flickr的照片但会显示照片的超链接。

如下是MyFriendFeed的输出。注意在来自Technorati的几篇博文的中间有来自flickr的图片。

image

 

混搭RSS源的提示

 

         有时候如果你知道应用程序使用的URL的格式那构造动态生成的RSS源的URL是很容易的。例如,Google News提供了针对词语查询结果的RSS源。正如许多数据库驱动的应用程序的例子,针对指定搜索词的RSS源作为数据库查询也是动态产生的。服务器上一个程序运行来完成得到指定搜索词的RSS源的请求;其输出为RSS源的XML流。

         要查看这是怎么工作的,转到http://news.google.com并输入一个搜索词popfly来查找关于Popfly的文章。

         点击页面左侧的RSS链接来获得这个新闻源的URL。例如,关于Popfly的新闻的RSS源的URL为:

http://news.google.com/news?hl=en&ned=us&q=popfly&ie=UTF-8&output=rss

Google新闻中关于mashup的新闻的RSS源的URL为:

http://news.google.com/news?hl=en&ned=us&q=mashups&ie=UTF-8&output=rss

         这些URL中唯一不同的部分即搜索词(URLq=后面的部分)。注意,这样使用Text Appender块构建一个新闻源的URL就非常容易了。选择append3操作,指定第一个输入为URL的开始部分http://news.google.com/news?hl=en&ned=us&q= ;  第二部分输入使用搜索词(在这个例子中,来自一个用户输入块);第三部分输入为RSSURL的剩余部分&ie=UTF-8&output=rss。将TextAppender块连接到一个RSS块来指定要获取项目的RSS源的URL

image

         本课附录中的表格展示了其它一些可以使用这种技术构建mashupRSS源的URL的例子。下一个例子中的NewsFilter这个mashup也依赖这个技术。

示例3:新闻过滤

 

         Steve BallmerBill Gates怎样评论现在的微软?或者有没有关于丰田与本田混合汽车的新闻?有什么埃克森和美孚关于汽油生产的新闻的吗?在这个例子中你将看到怎样准确的找到你正在寻找的新闻头条。

         这个解决方案创建了一个mashup合并2个不同的RSS源,然后过滤合并源结果来只显示那些符合给定条件的项目。用户将被提示输入两个搜索词即要匹配的条件:

image

如下是这个mashup的剩余部分:

image

Text Appender块构造了针对关于来自用户输入块的两个搜索词的包含头条的Google新闻RSS的适当的URL,并将它们传到相应的RSS块。Combine块合并两个RSS源。

ConditionBuilder块构造一个FilterConditionRSS源的描述是否包含UserInput块的value3中的搜索词。

RSSFilter块依据这个条件来过滤,并将结果传给StevesTableWithHotFirstColumn来在浏览器中显示。

如下是Steve BallmerBill Gates对现在微软的看法:

image

原文地址:https://www.cnblogs.com/lsxqw2004/p/1780115.html