bokbasen/php-sdk-met-api

PHP SDK Bokbasen的元数据API

v2.1.0 2017-08-30 07:28 UTC

This package is not auto-updated.

Last update: 2024-09-15 03:03:32 UTC


README

用于与Bokbasen元数据API交互的SDK。目前仅支持导出功能。

SDK假定您已了解API,请参阅文档:https://bokbasen.jira.com/wiki/spaces/api/pages/61964298/Metadata

身份验证

此SDK需要Bokbasen API客户端,有关如何实现的详细信息,请参阅php-api-client

以下所有代码示例都假设存在此变量

<?php
use Bokbasen\Auth\Login;
use Bokbasen\ApiClient\Client;

$auth = Login('username', 'password');
$client = new Client($auth);
?>

ONIX导出

创建ONIX导出客户端

在创建导出对象时使用auth对象并设置您的订阅(订阅基于您与Bokbasen的合同。基本、扩展或学校)

<?php
use Bokbasen\Metadata\Export\Onix;
$onixClient = new Onix($client, Onix::URL_PROD, Onix::SUBSCRIPTION_EXTENDED);
?>

获取单个ISBN的ONIX

<?php
$onixAsString = $onixClient->getByISBN('9788276749557');
?>

根据日期下载ONIX到文件

仅在您没有有效的下一个令牌时使用。给定文件名将被追加,直到获取所有页面(如果$downloadAllPages === true)

<?php
$nextToken = $onixClient->downloadAfter(new \DateTime('2017-01-01'),'/onixFolder/');
//Save next token for later use
?>

根据令牌下载ONIX到文件

使用$nextToken获取自上次执行以来所有更改

<?php
//Loop to get all pages
$morePages = true;
while($morePages){
	$morePages = $onixClient->downloadNext($nextToken,'/onixFolder/');
	$nextToken = $onixClient->getLastNextToken();
}

//Save next token for later use
?>

获取XML字符串

如果您不想使用SDK为您编写文件,请使用以下方法获取每个请求的完整响应对象。这意味着您需要自己实现头部解析逻辑。

<?php
$response = $onixClient->getAfter(new \DateTime('2017-01-01')); 
//Implement your own parsing here and get token from header

//Use token to get more pages
$response = $onixClient->getNext($token); 
?>

对象导出

对象报告在分页方面与ONIX下载有类似的过程。SDK抽象了报告方面并为您下载实际文件。

下载自某个日期以来的所有对象更改

仅在您没有有效的下一个令牌时使用。

<?php
$nextToken = $objectClient->downloadAfter(new \DateTime('2017-10-01'),'/pathForObjects/');
//Save next token for later use
?>

根据令牌下载对象到文件

使用$nextToken获取自上次执行以来所有更改

<?php
//Loop to get all pages, each page will be stored as separate file
$morePages = true;
while($morePages){
	$morePages = $onixClient->downloadNext($nextToken,'/pathForObjects/');
	$nextToken = $onixClient->getLastNextToken();
}

//Save next token for later use
?>

其他过滤器

<?php
//Only download spesific types of objects
$nextToken = $objectClient->downloadAfter(new \DateTime('2017-10-01'),'/pathForObjects/',[\Bokbasen\Metadata\Export\Object::OBJECT_TYPE_AUDIO_SAMPLE,\Bokbasen\Metadata\Export\Object::OBJECT_COVER_IMAGE_SMALL]);

//you can also download for spesific ISBNs ($downloadAllPages must be true for this to work, and ensure to set a old date)
$objectClient->downloadAfter(new \DateTime('1950-01-01'),'/pathForObjects/',[\Bokbasen\Metadata\Export\Object::OBJECT_TYPE_AUDIO_SAMPLE,\Bokbasen\Metadata\Export\Object::OBJECT_COVER_IMAGE_SMALL],true,['9788251824491','9788215012520']);
?>