Picasa Web Albums 为 Web 应用程序开发人员提供了一种基于 REST 的 Data API,可用于处理存储于服务器上的照片和相册。PHP 的 SimpleXML 扩展和 Zend 的 GData Library 则非常适合于处理由此 API 生成的 XML 提要,借助于此,您就能够定制照片管理和共享的 PHP 应用程序。通过本文,了解这个 Picasa Web Albums Data API,看看如何能够用它来检索照片和照片元数据;添加、修改和删除照片;执行 Picasa 用户生成内容的关键字搜索。
|
正如喜欢拍摄大量数字照片的人一样,我也经常碰到磁盘混乱的问题 — 旧照片占据了我计算机上数百兆字节的空间,这些照片只粗略进行了标记,有的甚至都没有标记。几个月前,在我尝试了 Google 免费的 Picasa 照片管理软件之后,才从混乱中找出了处理办法。
Picasa 不仅可以从 Web 上下载 — 它还能通过免费的照片共享网站 Picasa Web Albums 在线使用。在这个网站,用户可以上传照片和视频,将这些照片和视频分门别类地放入相册、用关键字标记这些照片和视频以便于搜索、与他人共享这些照片和视频。不过,最棒的还在幕后:与很多其他的 Google 工具一样,Picasa Web Albums 公开了一个 Data API,允许开发人员围绕在用户相册内存储的照片构建定制应用程序。您可以访问这个 API,它遵循 REST 模型。此 API 还具备针对很多常用语言(包括我最常使用的 PHP)的客户库。
本文将向您介绍 Google Picasa Web Albums Data API 并向您展示如何集成 PHP 应用程序和 Picasa 相册和照片。本文的示例包括如何检索相册和照片、通过定制的 Web 界面上传照片并按关键字搜索照片。现在,就请您加入进来,让我们立即开始吧!
|
在深入研究 PHP 代码之前,先来简单介绍 Picasa Web Albums Data API。与所有基于 REST 的服务一样,先要有一个对指定服务的 HTTP 请求。这个 HTTP 请求包含具有一个或多个输入参数的查询;服务器用 Atom 或 RSS 格式的响应(或提要)回复此查询,这类格式适合于在任何支持 XML 的客户机内解析。
一个典型的 Picasa 提要包含很多信息。举例来说,试着在浏览器中弹出 URL http://picasaweb.google.com/data/feed/api/user/userid?kind=photo into(在用您的 Google 帐户用户名替换了 userid 之后)并假设在 Picasa Web Albums 内已经保存了一些照片和相册,输出结果应该类似 清单 1。
遍览上述输出以熟悉其中的主要元素:
- Picasa Web Albums Data API 用具有所需数据的提要响应 REST 请求。可用的提要有很多种:相册提要、照片提要、用户提要、用户联系提要等。不过,在很多情况下,XML 响应都会包含一个 <feed> 元素作为根元素。<feed> 元素又包含 <link> 元素(包含结果集当前页、后一页和前一页)和 <openSearch:> 元素(包含此搜索的汇总统计数据)。
- 最外边的 <feed> 元素包含一个或多个 <entry> 元素,每个 <entry> 元素代表与查询相匹配的每个照片,而且还包含所代表照片的进一步信息,包括它的标题、文件名、发布日期以及作者。每个 <entry> 又包含 <link> 元素,它提供 URL 链接以查看和编辑此照片。
- 每个 <entry> 内的一组 <gphoto:> 元素包含有关此照片的详细信息:大小、尺寸、相册、注释数量等。
- 每个 <entry> 内的 <media:group> 元素包含照片的关键字和缩略图链接??
|
现在,我们来看看一个用 PHP 和 SimpleXML 解析 Picasa Web Albums 提要的例子。清单 2 接受 清单 1 的提要并使用 SimpleXML 从中提取相关的数据段并将其格式化成 Web 页:
清单 2:用 SimpleXML 检索照片列表
|
图 1 展示了输出结果:
图 1. 列出照片的 Web 页
本文转自IBM Developerworks中国