FeedEx桌面资讯聚合器
——一款带语音功能的RSS阅读器
作者:西南石油大学软件工程2002级 邓鹏

        Web技术的发展从来没有停止过,从静态网页到基于数据库内容管理的动态网页。目前,我们正在从Web 1.5的动态网页时代过渡到Web 2.0时代。虽然Web 2.0这个词当今非常流行,但是其定义依然很模糊。根据维基百科全书的定义,Web 2.0至少包含以下特征:1.交互性;2.社会性;信息从独立到融合。Web 2.0与以前的Web技术相比,将加强人与人之间信息的交换,而淡化作为一种单向大众媒体的作用,这也正是现在Blog流行的原因。同时,在Web 2.0下,原本独立存储于内容提供商数据库中的数据将在表现层互相引用与融合。那么如何实现简单的数据融合呢?
        RSS技术正是符合了这种需求。Really Simple Syndication是一种基于XML的共享数据交换规范。目前主要版本是0.91和2.0。当今大部分大型网站都提供RSS Feeds(种子,摘要)。
        我的项目叫FeedEx,也就是Feed Express,网文摘要快递的意思。作为一款RSS阅读器,他天生就带有许多Web 2.0的特征与优势。首先,FeedEx为用户提供风格统一、无广告骚扰的清爽阅读界面;其次,用户只需一次订阅。以后,将不再需要不停的打开浏览器在各个网站之间切换,节省了用户时间;另外,用户可以通过FeedEx精确、及时地跟踪信息的变化与走势。FeedEx可以帮助用户搜索整个网络的关键字新闻。最后,FeedEx类似于Outlook的用户界面让用户更容易上手。
        FeedEx在提供与其他RSS阅读器相同功能的同时也具有自己的特色功能:语音朗读、MP3生成和全屏幕播放。语音朗读,允许用户在不方便查看屏幕的时候,同样能获得资讯;根据网络资讯生成的MP3使用户获得更丰富的资讯体验,早起的上班族可以将自己关心的包含“西南石油大学”的新闻压缩、下载到MP3播放器中,在上班路上收听,时刻了解最新动态。全屏幕播放适合于坐在客厅里,手拿遥控器的电视迷。通过遥控器的控制,电视迷可以用自己喜欢的图片作为背景浏览资讯。
        FeedEx具有强大功能,是与其采用先进生产力分不开的。在设计之初,我全程尝试使用了面向对象的UML分析设计方法。使用C#语言在Visual Studio .Net 2003和Visual Studio 2005环境下开发,数据库端采用微软Access 2003桌面数据库。RSS文件的解析采用的是Sourceforge.net上发布的具有GPL证书的RSS.NET组件。Taskbar Notifier采用的是CodeProject.com上发布的具有GPL证书的组件。Lame是在Sourceforge.net上发布的具有GPL证书的世界公认最好MP3压缩引擎。而最关键的语音引擎则使用的是微软亚洲研究院2001年发布的Microsoft® Speech SDK 5.1和配套的中文和日本语语言包。需要说明的是,我用到的这些组件都是提供copyleft的,具体请参见我的毕业设计论文。
        下面讲一讲FeedEx特色功能具体的实现方法与工作流程。首先介绍从RSS到FeedEx中显示的工作流程。当用户输入RSS文件所在地址之后,RSS.NET会尝试到该地址下载RSS文件,如果失败,则将用户输入的地址作为关键字传递给浏览器默认的网络搜索引擎搜索,将返回值显示在FeedEx的浏览器中。如果下载、解析RSS成功,则将RSS Channel里面每一个Item得Title填充到FeedEx的ListBox中,并将第一个Item的Description写入一个具有固定格式的HTML缓冲文件中。当缓冲文件写入完毕,会激发事件,让FeedEx的浏览器加载本地的这个缓冲文件。这样,信息最终就呈现在用户面前了。
        FeedEx不仅支持当前信息的快速语音朗读和MP3生成,同时支持整个频道逐条朗读和逐条MP3生成,他们的工作原理非常相似。在成功解析RSS文件的基础上,将Item的Description信息传递给一个正则表达式,该正则表达式会尝试除去可能存在的HTML标签,仅保留自然语言文字。过滤后的文字将被提交给语音引擎。语音引擎根据用户的选择和Channel中Language信息,可以直接TTS(Text To Speech)或者生成Wave音频文件。需要指出的是,Wave文件通常比较大,需要耗费大量的硬盘空间。当Wave文件生成之后,会激发事件写一个包含Lame压缩MP3命令行的批处理文件。完成写入批处理文件后,激发事件,开始执行批处理文件,压缩Waves到MP3s。压缩完成后,系统根据事件删除Wave文件,保留MP3文件。
        根据初步的软件测试,FeedEx达到了设计要求,能够完整的实现预期功能。但是,整个软件还略显粗燥,在有些细节的处理上还有所欠缺。目前对于Google提出的ATOM格式和OPML格式暂时不能支持。在用户界面上也还存在一些不太友善的地方需要改进。同时,FeedEx在多线程的处理上还存在一些问题有待解决。这些问题希望能在下一步代码重构和debug中得到解决。具体的Road map。请参考论文。
        因为使用了较为新颖的技术,所以导致分发FeedEx可能存在问题。为尽量减少分发的难度,我特意将FeedEx分为两个版本,安装版和绿色版。安装版使用InstallShield 11.5制作,界面友好。目的是一步步引导用户安装必要的.NET Framework 1.1&2.0,和语音引擎、语言包。同时,提供用户卸载该软件的功能。绿色版适合于高级用户,需要手动安装必要的软件。我还编写有用户手册和Flash演示视频,提供给首次使用FeedEx的用户使用。请参考光盘中相关文件。