angelleger/google-books

用于与 Google Books API 交互的包

dev-master 2022-10-01 20:36 UTC

This package is auto-updated.

Last update: 2024-09-29 06:14:57 UTC


README

Build Status Scrutinizer code quality Packagist Gitter

php-google-books

用于操作 Google Books API 的简单 PHP 包。包含 Laravel5 集成。尚未支持身份验证,因此只能使用公开数据。欢迎 PR。

使用 Composer 安装

请确保已安装 Composer,然后在您的项目目录中运行

composer require scriptotek/google-books

以获取该包的最新稳定版本。

用法

首先创建一个新的客户端

require_once('vendor/autoload.php');
use Angelleger\GoogleBooks\GoogleBooks;

$books = new GoogleBooks(['key' => 'YOUR_API_KEY_HERE']);

请注意,您也可以在不指定 API 密钥的情况下使用 API,但这样您将获得较低请求配额。当达到配额时,会抛出 UsageLimitExceeded 异常。

处理卷

通过 ID 获取单个卷

$volume = $books->volumes->get('kdwPAQAAMAAJ');

或通过 ISBN

$volume = $books->volumes->byIsbn('0521339057');

搜索

foreach ($books->volumes->search('Hello world') as $vol) {
    echo $vol->title . "\n";
}

请注意,search() 方法返回一个生成器,它会自动获取更多结果,直到结果列表耗尽。如果结果有数千个,当然会花费很长时间来获取,所以您可能想要定义一个限制。限制可以定义为一个选项:在 GoogleBooks 类中定义 ['maxResults' => 10]

处理书架

通过用户 ID 和书架 ID 获取单个书架

$shelf = $books->bookshelves->get('113555231101190020526', '1002');

列出用户的公共书架及其卷

foreach ($books->bookshelves->byUser('113555231101190020526') as $shelf) {
    echo "<h2>$shelf->title</h2>\n";
    echo "<ul>\n";
    foreach ($shelf->getVolumes() as $vol) {
        echo "  <li>$vol->title</li>\n";
    }
    echo "</ul>\n";
}

Laravel 5 集成

该项目包含一个服务提供程序,您可以将其添加到 config/app.php 文件中的 $providers 数组中

Angelleger\GoogleBooks\GoogleBooksServiceProvider::class,

如果您喜欢,还可以添加一个外观到 $aliases 数组中

'GoogleBooks' => Angelleger\GoogleBooks\GoogleBooksFacade::class,

运行

$ php artisan vendor:publish --provider="Angelleger\GoogleBooks\GoogleBooksServiceProvider"

以创建 config/googlebooks.php 配置文件。

故障排除

如果您遇到 403 禁止访问,并且

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "unknownLocation",
    "message": "Cannot determine user location for geographically restricted operation."
   }
  ],
  "code": 403,
  "message": "Cannot determine user location for geographically restricted operation."
 }
}

这意味着 Books API 无法根据您的 IP 地址定位您。通过使用构造函数的 country 选项手动指定 2 位 ISO639 国家代码来修复此问题

$books = new GoogleBooks(['country' => 'NO']);