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数据。*
   82   83   84   85   86   87   88   89   90   91   92