La API de datos de Google Book Search API permite a las aplicaciones cliente ver y actualizar contenido de Book Search en forma de feeds de la API de Google Data API.
Su aplicación cliente puede usar la API de datos de Book Search API para realizar búsquedas de texto completo de libros y recuperar información estándar de libros, calificaciones y reseñas. También puede acceder a las colecciones de bibliotecas y reseñas públicas de usuarios individuales. Por último, su aplicación puede enviar solicitudes autenticadas para permitir a los usuarios crear y modificar colecciones de bibliotecas, calificaciones, etiquetas, reseñas y otras entidades específicas de la cuenta.
Para más información sobre la API de datos de Book Search API, consulte la guía oficial para desarrolladores de PHP en code.google.com.
Puede acceder tanto a feeds públicos como privados usando la API de datos de Book Search API. Los feeds públicos no requieren ninguna autenticación, pero son de solo lectura. Si desea modificar bibliotecas de usuarios, enviar reseñas o calificaciones, o añadir etiquetas, entonces su cliente necesita autenticarse antes de solicitar feeds privados. Puede autenticarse usando cualquiera de dos enfoques: autenticación por proxy AuthSub o autenticación por nombre de usuario/contraseña con ClientLogin. Consulte la sección de autenticación en la Guía para desarrolladores de PHP para más detalles.
La API de datos de Book Search API proporciona una serie de feeds que enumeran colecciones de libros.
La acción más común es recuperar una lista de libros que coincidan con una
consulta de búsqueda. Para ello, crea un objeto VolumeQuery
y lo pasa al método Books::getVolumeFeed().
Por ejemplo, para realizar una consulta por palabra clave, con un filtro sobre la
visibilidad para restringir los resultados a libros de vista parcial o completa, use
los métodos setMinViewability() y setQuery()
del objeto VolumeQuery. El siguiente fragmento de código
imprime el título y la visibilidad de todos los volúmenes cuyos metadatos o texto coinciden con
el término de búsqueda "domino":
$books = new Zend_Gdata_Books();
$query = $books->newVolumeQuery();
$query->setQuery('domino');
$query->setMinViewability('partial_view');
$feed = $books->getVolumeFeed($query);
foreach ($feed as $entry) {
echo $entry->getVolumeId();
echo $entry->getTitle();
echo $entry->getViewability();
}
La clase Query, y sus subclases como
VolumeQuery, se encargan de construir URLs
de feeds. El VolumeQuery mostrado arriba construye una URL
equivalente a la siguiente:
http://www.google.com/books/feeds/volumes?q=keyword&min-viewability=partial
Nota: Dado que los resultados de Book Search son públicos, puede realizar una consulta de Book Search sin autenticación.
Estos son algunos de los métodos más comunes de VolumeQuery
para establecer parámetros de búsqueda:
setQuery(): Especifica un término de
consulta de búsqueda. Book Search busca en todos los metadatos de libros y el texto completo de los
libros que coincidan con el término. Los metadatos del libro incluyen títulos, palabras clave,
descripciones, nombres de autores y temas.
Tenga en cuenta que cualquier espacio, comilla u otra puntuación en el valor
del parámetro debe estar escapado para URL (Use un signo más (+) para un
espacio). Para buscar una frase exacta, encierre la frase entre comillas.
Por ejemplo, para buscar libros que coincidan con la frase "spy plane", establezca
el parámetro q a %22spy+plane%22.
También puede usar cualquiera de los
operadores de búsqueda avanzada compatibles con Book Search. Por ejemplo,
jane+austen+-inauthor:austen devuelve coincidencias que mencionan
(pero no están escritas por) Jane Austen.
setStartIndex(): Especifica
el índice del primer resultado coincidente que debe incluirse en el
conjunto de resultados. Este parámetro usa un índice basado en uno, lo que significa que el primer
resultado es 1, el segundo resultado es 2 y así sucesivamente. Este parámetro funciona
junto con el parámetro max-results
para determinar qué resultados devolver. Por ejemplo, para
solicitar el tercer conjunto de 10 resultados—resultados 21-30—establezca
el parámetro start-index a 21 y el
parámetro max-results a 10.
Nota: Esto no es un mecanismo general de
cursor. Si primero envía una consulta con
?start-index=1&max-results=10 y luego envía otra
consulta con ?start-index=11&max-results=10, el
servicio no puede garantizar que los resultados sean equivalentes a
?start-index=1&max-results=20, porque podrían haberse producido inserciones y
eliminaciones entre las dos consultas.
setMaxResults():
Especifica el número máximo de resultados que deben incluirse
en el conjunto de resultados. Este parámetro funciona junto con el
parámetro start-index para determinar qué
resultados devolver. El valor predeterminado de este parámetro es
10 y el valor máximo es 20.
setMinViewability(): Permite filtrar los resultados según
el estado de
visibilidad de los libros. Este parámetro acepta uno de tres valores:
'none' (el predeterminado, que devuelve todos los libros coincidentes sin importar la
visibilidad), 'partial_view' (que devuelve solo libros
que el usuario puede previsualizar o ver en su totalidad), o
'full_view' (que devuelve solo libros que el usuario puede
ver en su totalidad).
Google Book Search proporciona la búsqueda de marca compartida, que permite a los socios de contenido ofrecer búsqueda de texto completo de sus libros desde sus propios sitios web.
Si es un socio que desea realizar una búsqueda de marca compartida usando la API de datos de Book Search API, puede hacerlo modificando la URL del feed anterior para que apunte a su implementación de búsqueda de marca compartida. Si, por ejemplo, una búsqueda de marca compartida está disponible en la siguiente URL:
http://www.google.com/books/p/PARTNER_COBRAND_ID?q=ball
entonces puede obtener los mismos resultados usando la API de datos de Book Search API en la siguiente URL:
http://www.google.com/books/feeds/p/PARTNER_COBRAND_ID/volumes?q=ball+-soccer
Para especificar una URL alternativa al consultar un feed de volúmenes, puede
proporcionar un parámetro adicional a newVolumeQuery()
$query =
$books->newVolumeQuery('http://www.google.com/books/p/PARTNER_COBRAND_ID');
Para información adicional o soporte, visite nuestro centro de ayuda para socios.
Un usuario puede añadir una calificación a un libro. Book Search usa un sistema de calificación de 1 a 5 en el que 1 es la calificación más baja. Los usuarios no pueden actualizar ni eliminar calificaciones.
Para añadir una calificación, añada un objeto Rating a un
VolumeEntry y publíquelo en el feed de anotaciones. En el
ejemplo siguiente, partimos de un objeto VolumeEntry vacío.
$entry = new Zend_Gdata_Books_VolumeEntry(); $entry->setId(new Zend_Gdata_App_Extension_Id(VOLUME_ID)); $entry->setRating(new Zend_Gdata_Extension_Rating(3, 1, 5, 1)); $books->insertVolume($entry, Zend_Gdata_Books::MY_ANNOTATION_FEED_URI);
Además de las calificaciones, los usuarios autenticados pueden enviar reseñas o editar sus reseñas. Para información sobre cómo solicitar reseñas enviadas anteriormente, consulte Recuperar anotaciones.
Para añadir una reseña, añada un objeto Review a un
VolumeEntry y publíquelo en el feed de
anotaciones. En el ejemplo siguiente, partimos de un objeto
VolumeEntry existente.
$annotationUrl = $entry->getAnnotationLink()->href;
$review = new Zend_Gdata_Books_Extension_Review();
$review->setText("This book is amazing!");
$entry->setReview($review);
$books->insertVolume($entry, $annotationUrl);
Para actualizar una reseña existente, primero recupere la reseña que desea actualizar, luego modifíquela, y después envíela al feed de anotaciones.
$entryUrl = $entry->getId()->getText();
$review = new Zend_Gdata_Books_Extension_Review();
$review->setText("This book is actually not that good!");
$entry->setReview($review);
$books->updateVolume($entry, $entryUrl);
Puede usar la API de datos de Book Search API para etiquetar volúmenes con palabras clave. Un usuario puede enviar, recuperar y modificar etiquetas. Consulte Recuperar anotaciones para saber cómo leer etiquetas enviadas anteriormente.
Para enviar etiquetas, añada un objeto Category
con el esquema LABELS_SCHEME a un
VolumeEntry y publíquelo en el feed de anotaciones.
$annotationUrl = $entry->getAnnotationLink()->href;
$category = new Zend_Gdata_App_Extension_Category(
'rated',
'http://schemas.google.com/books/2008/labels');
$entry->setCategory(array($category));
$books->insertVolume($entry, Zend_Gdata_Books::MY_ANNOTATION_FEED_URI);
Puede usar la API de datos de Book Search API para recuperar anotaciones enviadas por un usuario determinado. Las anotaciones incluyen reseñas, calificaciones y etiquetas. Para recuperar las anotaciones de cualquier usuario, puede enviar una solicitud no autenticada que incluya el ID de usuario. Para recuperar las anotaciones del usuario autenticado, use el valor me como ID de usuario.
$feed = $books->getVolumeFeed(
'http://www.google.com/books/feeds/users/USER_ID/volumes');
<i>(or)</i>
$feed = $books->getUserAnnotationFeed();
// print title(s) and rating value
foreach ($feed as $entry) {
foreach ($feed->getTitles() as $title) {
echo $title;
}
if ($entry->getRating()) {
echo 'Rating: ' . $entry->getRating()->getAverage();
}
}
Para ver una lista de los parámetros de consulta admitidos, consulte la sección de parámetros de consulta.
Google Book Search proporciona varias colecciones de libros específicas del usuario, cada una con su propio feed.
La colección más importante es My Library del usuario, que representa los libros que el usuario desea recordar, organizar y compartir con otros. Esta es la colección que el usuario ve al acceder a su página de My Library.
Las siguientes secciones describen cómo recuperar una lista de libros de la biblioteca de un usuario, con o sin parámetros de consulta.
Puede consultar un feed público de Book Search sin autenticación.
Para recuperar los libros del usuario, envíe una consulta al
feed My Library. Para obtener la biblioteca del usuario
autenticado, use me en lugar de USER_ID.
$feed = $books->getUserLibraryFeed();
Nota: El feed puede no contener todos los libros del usuario, porque hay un límite predeterminado en el número de resultados devueltos. Para más información, consulte el parámetro de consulta max-results en Buscar libros.
Al igual que puede buscar en todos los libros,
puede realizar una búsqueda de texto completo solo sobre los libros de la
biblioteca de un usuario. Para ello, simplemente establezca los
parámetros apropiados en el objeto VolumeQuery.
Por ejemplo, la siguiente consulta devuelve todos los libros de su biblioteca que contienen la palabra "bear":
$query = $books->newVolumeQuery(
'http://www.google.com/books/feeds/users' .
'/USER_ID/collections/library/volumes');
$query->setQuery('bear');
$feed = $books->getVolumeFeed($query);
Para ver una lista de los parámetros de consulta admitidos, consulte la sección de parámetros de consulta. Además, puede buscar libros que hayan sido etiquetados por el usuario:
$query = $books->newVolumeQuery(
'http://www.google.com/books/feeds/users/' .
'USER_ID/collections/library/volumes');
$query->setCategory(
$query->setCategory('favorites');
$feed = $books->getVolumeFeed($query);
Puede usar la API de datos de Book Search API para añadir un libro a, o eliminar un libro de, la biblioteca de un usuario. Las calificaciones, reseñas y etiquetas son válidas en todas las colecciones de un usuario, y por lo tanto se editan usando el feed de anotaciones (consulte Usar las funciones de comunidad).
Después de autenticarse, puede añadir libros a la biblioteca del usuario actual.
Puede crear una entrada desde cero si conoce el ID del volumen, o insertar una entrada leída de cualquier feed.
El siguiente ejemplo crea una nueva entrada y la añade a la biblioteca:
$entry = new Zend_Gdata_Books_VolumeEntry();
$entry->setId(new Zend_Gdata_App_Extension_Id(VOLUME_ID));
$books->insertVolume(
$entry,
Zend_Gdata_Books::MY_LIBRARY_FEED_URI
);
El siguiente ejemplo añade un objeto VolumeEntry
existente a la biblioteca:
$books->insertVolume(
$entry,
Zend_Gdata_Books::MY_LIBRARY_FEED_URI
);