Google Reader 是一个使用了大量JavaScript构建的feed聚合器,它能非常及时地抓取最新的feed数据。Google的Ajax前台调用到的数据采用了Atom格式,这种数据技术降低了Google Reader的开发难度,同时也使得第三方应用很容易对其进行扩展。
Feed获取
/reader/atom/feed/
不管feed一开始采用了什么格式,Google都将其转化为Atom格式。所有的RSS feed包含一切在提要里边出现的所有元素,这一点和My Yahoo! backend不一样,Yahoo的不包含任何附加的元数据。
你可以一下的格式从Google Reader访问任何feed:
- http://www.google.com/reader/atom/feed/ + [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和第三方开发者创建更多的新应用!