Искать детали книгу с Google Books API в PHP
Я использую API Google books) , чтобы получить подробную информацию книгу:
, чтобы получить подробную информацию книгу, искать по имени, я использую следующий пример предоставляемых ими, в этом случае файл simple-query.php
и в папке examples
.
что происходит, что я могу только сделать поиск по автору книг при вызове этой функции:
$results = $service->volumes->listVolumes('Catarina Coelho', $optParams);
Как я могу сделать поиск по названию книги? вижу каких-либо достопримечательностей, поиска по названию книги.
Как я не мог сделать так, сверху, нашел пример в интернете, но поиск производится по URL -
https://www.googleapis.com/books/v1/volumes?q=Memoria+historia+da+provincia+de+Santa+Catharina
, Если использовать это решение через URL-адрес, как я могу получить результат по коду и храниться в переменной/массива?
3 answers
Вы Можете прочитать данные JSON, и таким образом манипулировать так, что тебе будет угодно:
<?php
$page = file_get_contents("https://www.googleapis.com/books/v1/volumes?q=Memoria+historia+da+provincia+de+Santa+Catharina");
$data = json_decode($page, true);
echo "Title = " . $data['items'][0]['volumeInfo']['title'];
echo "<br/>Authors = " . @implode(",", $data['items'][0]['volumeInfo']['authors']);
?>
Здесь этот пример, чтобы идти, искать Title
и Authors
и в книге.
В разделе Performing Search, говорит о том, что можно указать название книги (или его часть) с помощью параметра intitle
. Например:
http https://www.googleapis.com/books/v1/volumes?q=intitle:Cem+Anos+de+Solidao
Ответ:
{
"kind": "books#volumes",
"totalItems": 17,
"items": [
{
"kind": "books#volume",
"id": "iPxztgAACAAJ",
"etag": "2jx8ktgU3G8",
"selfLink": "https://www.googleapis.com/books/v1/volumes/iPxztgAACAAJ",
"volumeInfo": {
"title": "Cem anos de solidão",
"authors": [
"Gabriel García Márquez"
],
"publishedDate": "1973",
"industryIdentifiers": [
{
"type": "OTHER",
"identifier": "OCLC:6522501"
}
],
"readingModes": {
"text": false,
"image": false
},
"pageCount": 364,
"printType": "BOOK",
"contentVersion": "preview-1.0.0",
"language": "en",
"previewLink": "http://books.google.com.br/books?id=iPxztgAACAAJ&dq=intitle:Cem+Anos+de+Solidao&hl=&cd=1&source=gbs_api",
"infoLink": "http://books.google.com.br/books?id=iPxztgAACAAJ&dq=intitle:Cem+Anos+de+Solidao&hl=&source=gbs_api",
"canonicalVolumeLink": "http://books.google.com.br/books/about/Cem_anos_de_solid%C3%A3o.html?hl=&id=iPxztgAACAAJ"
},
"saleInfo": {
"country": "BR",
"saleability": "NOT_FOR_SALE",
"isEbook": false
},
"accessInfo": {
"country": "BR",
"viewability": "NO_PAGES",
"embeddable": false,
"publicDomain": false,
"textToSpeechPermission": "ALLOWED",
"epub": {
"isAvailable": false
},
"pdf": {
"isAvailable": false
},
"webReaderLink": "http://books.google.com.br/books/reader?id=iPxztgAACAAJ&hl=&printsec=frontcover&output=reader&source=gbs_api",
"accessViewStatus": "NONE",
"quoteSharingAllowed": false
}
}
]
}
Попробуйте использовать этот код:
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
'Step 1:- google API url responsible for returning the book detail in JASON format
Const GOOGLEAPIURL As String = "https://www.googleapis.com/books/v1/volumes?q=”"
If txtISBN.Text <> String.Empty Then
Dim requestURL As String
'Step 2:- Reformed the URL to target particular ISBN number
requestURL = GOOGLEAPIURL + txtISBN.Text() + "+isbn"
'Step 3: created Http webrequest for URL
Dim wr As HttpWebRequest = HttpWebRequest.Create(requestURL)
'Step4 : get the response of web request in http web response object
Dim resp As HttpWebResponse = wr.GetResponse()
'Step 5: passes the response stream in stream reader
Dim sreader As New StreamReader(resp.GetResponseStream())
'Step 6: parsing the reader(which is in Jason format) using JASON.NET
Dim rss = JObject.Parse(sreader.ReadToEnd())
'Step 7: if object find the fetch the detail
If rss Is Nothing = False AndAlso rss.Count > 0 Then
lblBookName.Text = rss.Item("items")(0).Item("volumeInfo").Item("title").ToString()
lblAuthor.Text = rss.Item("items")(0).Item("volumeInfo").Item("authors").ToString().Replace("[", "").Replace("]", "").ToString()
lblPublisher.Text = rss.Item("items")(0).Item("volumeInfo").Item("publisher").ToString()
Else
lblMessage.Text = "Sorry ISBN Number not found, Please try different number."
End If
Else
lblMessage.Text = "Please enter the ISBN number"
End If
End Sub