scriptotek/google-books

用于与Google图书API交互的软件包

v0.2.6 2024-03-16 10:55 UTC

This package is auto-updated.

Last update: 2024-09-16 12:13:56 UTC


README

Build Status Scrutinizer code quality Packagist Gitter

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