http://www.yeeyan.com/articles/view/11184/6494

简介

Google Reader 是一个使用了大量JavaScript构建的feed聚合器,它能非常及时地抓取最新的feed数据。Google的Ajax前台调用到的数据采用了Atom格式,这种数据技术降低了Google Reader的开发难度,同时也使得第三方应用很容易对其进行扩展。本文作者将带你提前预览Google Reader API。

Google Reader 是一个使用了大量JavaScript构建的feed聚合器,它能非常及时地抓取最新的feed数据。Google的Ajax前台调用到的数据采用了Atom格式,这种数据技术降低了Google Reader的开发难度,同时也使得第三方应用很容易对其进行扩展。接下来我将带你提前预览Google Reader API

晚上10:40更新:Google Reader的产品经理Jason Shellen告诉我Google是先建立feed的API,然后才在这些数据之上建立的程序,这无疑是一个如何利用这些数据的典范。Jason肯定了我接下来这些文档的准确性,而且宣称Google计划“很快”(有可能是一个月内)将发布一个关于feed的API。同时,Google Reader的工程师Chris Wetherell也确认了这些说法

对新的聚合器开发者来说,由第三方提供的稳定可靠的feed解析服务能有效地降低其入门难度。Google和他们的工程师、服务器集群能够处理各种不同格式和验证状态的feed,使得开发者能把精力集中到交互体验和其他功能上来。你可以建立基于大量用户的应用,获取和同步他们的feed订阅列表,并且给用户提供基于不同设备和平台的更好体验。Google Reader本身只是给这些有用的数据提供了一种视图而已。

Google Reader对使用其feed系统的用户分配了20位数字构成的用户ID,用户各种数据的获取,都需要利用到domain为google.com下的名叫SID的cookie字段。

Feed获取

/reader/atom/feed/

不管feed一开始采用了什么格式,Google都将其转化为Atom格式。所有的RSS feed包含一切在提要里边出现的所有元素,这一点和My Yahoo! backend不一样,Yahoo的不包含任何附加的元数据。

你可以一下的格式从Google Reader访问任何feed:

你可以通过参数n设置返回的文章数量,默认为20。

Google忽略掉在阅读器里边没有用的数据,它们包括命名空间(如Apple iTunes podcast、Yahoo! Media RSS的命名空间)、作者信息(如email、主页地址等)、甚至于版权等内容。

订阅列表

/reader/atom/user/[user id]/pref/com.google/subscriptions

Google Reader的feed订阅列表包含用户当前订阅的和已经被删除的订阅。每个feed包含其地址、发布和更新时间、用户标记的标签(如果有的话)。当前订阅都被归类到阅读列表状态。通过设置complete为true,你还可以获取到所有的feed列表。

这里是我在Google Reader用户ID全部为0的账户的订阅列表。我没有订阅我自己的RSS feed,不过给我的Atom feed打上了标签。不管在原feed里边是否声明了作者,在每个列出的feed包含author元素都是空的。也许Google计划增加feed的认领服务,不过即使是他们自己的Google Blog,也还是没有任何额外的作者信息。

阅读列表

/reader/atom/user[user id]/state/com.google/reading-list

我最喜欢Google Reader的阅读列表功能,它能直接访问到我订阅feed中所有未读的文章,以一种“新闻流”的方式展现它们。

这里有一个我的阅读列表的例子,你同样可以通过参数n设置返回文章的数量。

已阅读文章

http://www.google.com/reader/atom/user/[user ID]/state/com.google/read

你可以通过这个API获取到用户在Google Reader里边已读的文章。如果想通过用户最近阅读的100篇文章分析其趋势或者实现对它们的查询,那么这个功能就很有用了。参数n同样可以设置返回的文章数量。

某标签下的文章列表

/reader/atom/user/[user id]/label/[tag]

你还可以查看指定标签下最近发表的文章。比如你把很多feed标记为“营销”,只是想访问有关营销的feed,这就很有用了。返回的内容中包含已读和未读的文章。已读的文章被归类到已读(state/com.google/read),你可以通过这判断是否将它们隐藏起来。返回的数量可以通过参数n来判断。

标星文章

/reader/atom/user[user id]/state/com.google/starred

Google Reader允许用户对文章标星。这些标星文章包括有feed地址、标签、发布/更新时间。你可以通过参数n指定返回的数量,默认为20。

Google将标星项目视作一种特殊的标签,因此输出的内容和标签下文章列表结构一致。

添加或删除订阅

/reader/api/0/edit-subscription

使用POST请求访问Google Reader的API,你可以添加任何feed到Google Reader的订阅列表。

  • /reader/api/0/edit-subscription — 基本地址
  • ac=["subscribe" 或者 "unsubscribe"] — 请求动作
  • s=feed%2F[feed URL] — 请求的订阅
  • T=[命令标识] — Google发布的具有时效性的标识,可以通过/reader/api/0/token获取。

添加标签

/reader/api/0/edit-tag

通过HTTP的POST请求可以给一个feed或单独的文章打上标签。

  • /reader/api/0/edit-tag — 基本地址
  • s=feed%2F[feed URL] — 你想打标签的feed地址
  • i=[item id] — 出现在feed中的文章的id,可选,用来给个别的文章打标签。
  • a=user%2F[user ID]%2Flabel%2F[标签] — 请求动作,添加标签给feed,文章,或者两者。
  • a=user%2F[user ID]%2Fstate%2Fcom.google%2Fstarred — 标星文章。
  • T=[special scramble] — 关于用户和新标签的信息。可能处于安全因素考虑,尚未公开。

总结

基于对Google上面这些和县官服务的请求,你有可能构建自己的feed阅读器。你可以把Google作为你的后台,创建具有全新体验的在线和离线的程序,利用Google的ID,略施小计,你还可以创建更加高级的功能。

Google已经在这些数据API之上建立了第一个程序——Google Reader,从他们对API地址的选择之上来看的话,Google Reader应该不是最后一个基于这些数据集的程序。我喜欢数据调用的开放,Google Reader 的API是如此简单,相信会引导Google和第三方开发者创建更多的新应用!