1
0
Fork 0
mirror of https://github.com/Yetangitu/owncloud-apps.git synced 2025-10-02 14:49:17 +02:00
nextcloud-apps/files_opds/lib/google.php

92 lines
3.3 KiB
PHP

<?php
/**
* ownCloud - Files_Opds App
*
* @author Frank de Lange
* @copyright 2014 Frank de Lange
*
* This file is licensed under the Affero General Public License version 3 or
* later.
*/
namespace OCA\Files_Opds;
/**
* Google class for OPDS
*/
class Google
{
/**
* @brief get ISBN data for $isbn at Google (books)
*
* @param string $isbn ISBN to search for
* @param arrayref &$meta
* @return int $status (0 on success, ERRORCODE otherwise)
*/
public static function get($isbn,&$meta) {
$command = 'https://www.googleapis.com/books/v1/volumes?q=isbn:' . $isbn;
$data = json_decode(file_get_contents($command),true);
if($data['totalItems'] > 0) {
self::parse($isbn,$meta);
return true;
} else {
$meta['rescan'] = date("Y-m-d\TH:i:sP", time() + Isbn::RESCAN_NOT_FOUND);
}
return false;
}
/**
* @brief parse Google response into OPDS $meta array
*
* @param array $data Google response (json_decoded into array)
* @param arrayref &$meta OPDS metadata array
* @return int errorcode (0 if success)
*/
static function parse($data,&$meta) {
foreach ($data as $key => $value) {
switch ($key) {
case 'description':
$meta['description'] = $value;
if(array_key_exists('notes',$data)) {
$meta['description'] .= ((trim($value) == false) ? '' : "\n\n") . $data['notes'];
}
break;
case 'subject_ids':
$meta['subjects'] = json_encode($value);
break;
/* rather pointless, ISBN is what brought us here in the first place and is alread set
case 'industryIdentifiers':
foreach($value as $array) {
if ($array['type'] = 'ISBN_13') {
$isbn13 = $array['identifier'];
} elseif ($array['type'] = 'ISBN_10') {
$isbn10 = $array['identifier'];
}
}
$meta['isbn'] = (isset($isbn13)) ? $isbn13 : $isbn10;
break;
*/
case 'title':
$meta['title'] = $value;
break;
case 'authors':
$meta['author'] = json_encode($value);
break;
case 'language':
$meta['language'] = $value;
break;
case 'publisher':
$meta['publisher'] = $value;
break;
case 'publishedDate':
$meta['date'] = $value;
break;
}
}
return true;
}
}