将 Google Book Search 集成到 PHP 应用程序中(4)
清单 10 展示了一个使用目标图书的卷标识符和 Zend_Gdata 库来添加评论的示例:
清单 10. 添加一条图书评论
| <?php // load Zend Gdata libraries require_once 'Zend/Loader.php'; Zend_Loader::loadClass('Zend_Gdata_Books'); Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); // set credentials for ClientLogin authentication $user = "[email protected]"; $pass = "secret"; try { // perform login $client = Zend_Gdata_ClientLogin::getHttpClient( $user, $pass, 'print'); $books = new Zend_Gdata_Books($client); // add review to book $id = 'BOOK_VOLUME_ID_HERE'; $entry = $books->getVolumeEntry($id); $review = new Zend_Gdata_Books_Extension_Review(); $review->setText("This book is amazing - v!"); $entry->setReview($review); $books->insertVolume( $entry, $entry->getAnnotationLink()->getHref() ); // display success message echo "Review successfully added with ID: $id"; } catch (Exception $e) { die('ERROR:' . $e->getMessage()); } ?> |
在 清单 10 中,getVolumeEntry() 方法用于通过图书的卷标识符来检索该图书的当前条目,然后,一个包含评论文本的 Zend_Gdata_Books_Extension_Review 对象通过 setReview() 方法附加到该条目。然后 insertVolume() 方法负责创建 POST 请求并更新 Google 服务器上的相应条目。
类似地,Google Book Search 还允许用户使用描述性的关键字为每本书设置标签。这是一个有用的社区特性,能够生成更有效、更相关的搜索结果。清单 11 通过一个示例展示如何通过编程方式将这些标签附加到一个图书条目:
清单 11. 添加图书标签
| <?php // load Zend Gdata libraries require_once 'Zend/Loader.php'; Zend_Loader::loadClass('Zend_Gdata_Books'); Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); // set credentials for ClientLogin authentication $user = "[email protected]"; $pass = "secret"; try { // perform login $client = Zend_Gdata_ClientLogin::getHttpClient( $user, $pass, 'print'); $books = new Zend_Gdata_Books($client); // add labels to book $id = 'BOOK_VOLUME_ID_HERE'; $entry = $books->getVolumeEntry($id); $entry->setCategory(array( new Zend_Gdata_App_Extension_Category('crime', 'http://schemas.google.com/books/2008/labels'), new Zend_Gdata_App_Extension_Category('suspense', 'http://schemas.google.com/books/2008/labels'), new Zend_Gdata_App_Extension_Category('elvis cole', 'http://schemas.google.com/books/2008/labels') )); $books->insertVolume( $entry, $entry->getAnnotationLink()->getHref() ); // display success message echo "Labels successfully added for ID: $id"; } catch (Exception $e) { die('ERROR:' . $e->getMessage()); } ?> |
在 清单 11 中,每个标签都表示为一个 Zend_Gdata_App_Extension_Category 实例,然后使用 setCategory() 方法将这些实例附加到图书条目,然后调用 insertVolume() 方法来将这些标签添加到 Google Book Search 数据库中的图书条目。
添加到 Google Book Search 的评论和标签并不是私有的,它们对所有 Internet 用户可见,用户可以通过 Google Books Web 站点或一个公共提要 URL 访问它们。为说明这一点,假设您可以查看一个特定用户创建的所有评论和标签,您只需在以下 URL 访问该用户的注释提要:http://books.google.com/books/feeds/users/USER_ID/volumes。注意,这个 URL 中的 USER_ID 必须是该用户在 Google Book Search 上的唯一识别号,而不是该用户的 Google Accounts 用户名。您可以在该用户的 “My Library” URL 链接中找到 Google Book Search 识别号。
结束语
尽管还处于开发阶段,Google Book Search Data API 仍然为开发人员将图书搜索结果集成到 Web 应用程序中提供了无限可能性。本文中的示例向您介绍了 Google Book Search 卷提要,展示了如何通过关键字、作者和标题搜索视频,如何从搜索结果提要提取图书元数据,包括出版商和作者信息、缩略图和 ISBN 编号。本文还简要介绍了 Google Book Search 的一些社区特性,展示如何以编程方式向图书条目添加评论和书签。
这些示例证明,当开发人员创建新的 Web 应用程序时,Google Book Search REST API 能够向他们提供大量的灵活性和自由度。如果您试图混搭图书搜索数据和来自其他 Web 服务的数据,或者只需构建一个针对作者、出版商或消费者的定制搜索界面,这个 API 都非常有用。试用这个 API 一段时间,看看您将有什么新的想法!
后注:
常用缩略词
API:应用程序编程接口
DOM:文档对象模型
HTTP:超文本传输协议
HTML:超文本标记语言
ISBN:国际标准书号
REST:具象状态传输
URL:统一资源定位符
XML:可扩展标记语言
- 最新评论
