scriptotek / google-books
用于与Google图书API交互的软件包
v0.2.6
2024-03-16 10:55 UTC
Requires
- guzzlehttp/guzzle: ^6.2|^7.0
Requires (Dev)
- mockery/mockery: >=0.9.5
- phpspec/phpspec: >=2
README
php-google-books
一个简单的PHP软件包,用于与Google图书API交互。包含Laravel5集成。目前不支持身份验证,因此只能与公开数据一起使用。欢迎提交PR。
使用Composer安装
请确保您已安装Composer,然后在项目目录中运行以下命令:
composer require scriptotek/google-books
以获取该软件包的最新稳定版本。
用法
首先创建一个新的客户端
require_once('vendor/autoload.php'); use Scriptotek\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
数组中
Scriptotek\GoogleBooks\GoogleBooksServiceProvider::class,
还有一个您可以将它添加到$aliases
数组的外观
'GoogleBooks' => Scriptotek\GoogleBooks\GoogleBooksFacade::class,
运行以下命令以创建config/googlebooks.php
配置文件:
$ php artisan vendor:publish --provider="Scriptotek\GoogleBooks\GoogleBooksServiceProvider"
故障排除
如果您在
{ "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." } }
中遇到403禁止访问,这意味着图书API无法根据您的IP地址找到您。通过使用构造函数的country
选项手动指定2位ISO639国家代码来解决这个问题
$books = new GoogleBooks(['country' => 'NO']);