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']);