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和第三方開發人員建立更多的新應用!
參考資料:http://code.google.com/p/pyrfeed/wiki/GoogleReaderAPI