angelleger / google-books
用于与 Google Books API 交互的包
dev-master
2022-10-01 20:36 UTC
Requires
- guzzlehttp/guzzle: ^6.2|^7.0
Requires (Dev)
- mockery/mockery: >=0.9.5
- phpspec/phpspec: >=2
This package is auto-updated.
Last update: 2024-09-29 06:14:57 UTC
README
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']);