Page 87 - JavaScript修炼之道
P. 87
78 第六部分 使用混搭
任务 34 Flickr 的同步更新
尽管Flickr提供了相当多的与REST兼容的API,不过它有用的那些API大多需要用户认证。这
比较麻烦,至少不是很适合要公开同步的内容。
可以用YQL来完成大部分有用的查询功能,而不需要认证。但是在本任务的特殊情况下,我
①
们用Atom feed的JSON数据变体 来做也是可行的,这是Flickr给大部分页面(包括Flickr自己的用
户页面)提供的API。得到的结果数据集包含我们需要的所有信息,包括预置图片和图片描述的
URL、图片长宽和发布日期。虽然这个feed仅限于提供最近的二十个图片更新,但它恰好就适合
我们这里的“Flickr更新”同步。
右页的JSON片段就是我们会得到的那种feed响应数据。在这里我们只对照片缩略图的URL
和照片发布日期最感兴趣。再多做一些工作的话,还可以得到照片的原始长宽以及拍照日期。不
过为了简单起见,我们还是只单独请求一次,不做太多调整。
这里我们得到的图像URL,它指向的目标是照片的中等大小版本。如果要用更小的正方形缩
略图,把图像URL的后缀从 _m 改为_s 即可。
右页的代码还很好地阐明了Prototype的Template类的用法,这允许我们以一种可复用的方
式高效地计算出“格式化的字符串”。
还是那句话,用YQL给Flickr提供的表可以在未认证的情况下得到更多信息(先请求一次得
到简略的初始响应结果,再分别查询每个照片以获得更多详细资料)。不过,如果你需要进一步
获取更详细的信息,或者干脆要更新数据的话,还是使用经过用户认证的Flickr API吧。
——————————
① 指对Atom feed的JSON做过一些调整的JSON数据。*