用 Flickr API 扩展 Project Zero 和 WebSphere sMash 的脚本平台
2009-11-17 00:00:00 来源:WEB开发网
图1. 照片拼接的屏幕快照
图片看不清楚?请点击这里查看原图(大图)。
创建如图 1 所示的照片拼接最简单的方法就是使用一个查找照片集的 Groovy 模板,然后使用由 Flickr 返回的照片集构建一个 HTML 表。更具体地说,就是使用 flickr() 方法查找照片记录,使用 thumbnail() 方法构建照片拼接,使用 original() 方法创建这个拼接到 Flickr 原始图像的超级链接。清单 12 显示了构建拼接表所需的 Groovy 代码;可以把它复制到一个更大的模板文件中,作为应用程序的完整用户界面的一部分。如果想立即测试一下这个小部件,它已经包括在 flickr.test 示例项目中 /public/index.gt 下。只要运行这个应用程序并用所喜欢的浏览器访问 http://localhost:8080 就可以看到这个小部件的运行。
清单 12. 配置 Flickr API 键<table border='0' cellpadding='0' cellspacing='10'>
<%
def set = "72157602828759420"; // flickr photo set ID
def length = 4; // size of the photo display box
for (page in 1..length) {
//
// set name-value pairs as specified by flickr API
//
request.flickr.method = "flickr.photosets.getPhotos";
request.flickr.params = [
photoset_id: set,
per_page: length,
page: page,
extras: "original_format"
];
flickr(); // send request to flickr
def response = request.flickr.response[];
println "<tr>";
response.photoset.photo.each() { // build the photo display box
println "<td>";
println "<a href='${original(it)}'><img border='0' src='${thumbnail(it)}'></a>";
println "</td>";
}
println "</tr>";
}
%>
</table>
清单 12 中的头两行代码分别提供了 Flickr 照片集 ID 以及拼贴图框的大小;可以改变这些值,以决定所显示的是何照片以及这个框有多大(如果您手头没有可用于测试的照片集,就可以使用清单 12 中的这个 Project Zero 团队的照片集)。另外一个值得注意的地方就是您不会同时得到所有的照片数据;照片数据在页面中读取,这样就有一些照片已被呈现,其他照片则尚在显露的过程中。如果允许在同一时间得到所有照片,并且随后创建表单元格,那么在拼贴图最终弹出前,加载时的初始等待时间将会比较长。
在自己运行这个代码前,需要在应用程序中的 zero.config 文件中设定 Flickr API 键。本文开始的部分就曾指导您参考 Flickr 站点来获得自己的 API 键,希望您现在已经有了 API 键。清单 13 显示了如何使用您的个人 API 键设置前面章节讨论过的 config.flickr.key 属性:
清单 13. 配置 Flickr API 键[/config/flickr]
key=1234567890
有了 API 键,就可以使用我们的定制 Groovy 绑定自由地读写 Flickr 数据。
结束语
Flickr 为那些想要将站点元素合并到自己的应用程序中的开发人员提供了一种非常有用、灵活的 API ,若能使用 Groovy 脚本编写和 Project Zero 平台会让事情更加简单。此外,本文中所介绍的这些技巧也可以适用到其他综合了社会性和数据分享的热门站点(比如 YouTube、Blogger 等)。只要 Web 站点能继续用 RESTful API 和可移植的数据格式公开其共享数据,您就总是能够将它们合并到 Zero 编程模型中。
本文示例源代码或素材下载
- ››扩展Axis2框架,支持基于JVM的脚本语言
- ››扩展WebSphere Portal V6个性化功能
- ››扩展JavaScript的时候,千万要保留其原来的所有功...
- ››扩展数据:如何为 Model 750 服务器选择 I/O 扩展...
- ››扩展 JDT 实现自动代码注释与格式化
- ››扩展 secldap 的功能以验证多个数据源
- ››扩展 JUnit4 以促进测试驱动开发
- ››扩展 JUnit 测试并行程序
- ››扩展的ToolStripEx控件
- ››扩展 Eclipse 的 Java 开发工具
- ››扩展 Eclipse 辅助和规范开发流程
- ››扩展方法 DataTable 和List 相互转换
更多精彩
赞助商链接