1. API Pública

OpenLibra API

OpenLibra dispone de un ligero servicio web con el que es posible acceder de forma remota a la mayoría de los datos de su catálogo bibliográfico.

Mediante una petición AJAX (Javascript), se puede establecer una conexión directa con el sistema y obtener resultados en tiempo real sobre la consulta. El sistema devuelve un objeto JSON con el que es sencillo trabajar directamente en Javascript o en otros lenguajes de servidor como PHP o Java.

Esta primera versión del API facilita la creación de clientes independientes para OpenLibra, como por ejemplo de escritorio, que permitan rastrear el catálogo en tiempo real en busca de novedades, crear notificaciones con las actualizaciones, clasificar y buscar libros según un criterio concreto o facilitar la lectura de documentos directamente online sin navegador.

Back to Home

2. Javascript / JSONP

El acceso a la información se realiza mediante una petición AJAX (Javascript) a los servidores de OpenLibra los cuales devuelven un objeto JSON con los datos encontrados.

Ya que por temas de seguridad, los servidores no permiten llamadas AJAX entre dominios diferentes, hay que utilizar el complemento JSONP. Esto quiere decir que, en el callback de la llamada AJAX, va añadida una función Javascript para manejar los datos devueltos. Con las actuales bibliotecas de tipo jQuery, la forma de acceso resulta muy sencilla.

Un ejemplo típico de petición utilizando la citada jQuery es el siguiente:

$.getJSON("http://www.etnassoft.com/api/v1/get/?id=589&callback=?", function( results ){
  console.log( "Search Result(s): ", results );
});

Para MooTools, un ejemplo de petición quedaría de la siguiente forma:

new Request.JSONP({
  url: "http://www.etnassoft.com/api/v1/get/",
  data: {
    id: "589"
  },
  onComplete: function( results ) {
    console.log( "Search Result(s): ", results );
  }
}).send();

La petición anterior buscará en cualquier caso el libro con el ID número 589 en la base de datos. El sistema devolverá un objeto JSON como el siguiente:

[
  {
    "ID":"589",
    "title":"Dise\u00f1o \u00c1gil con TDD",
    "author":"Carlos Bl\u00e9 Jurados y autores",
    "publisher":"www.iExpertos.com",
    "publisher_date":"2010",
    "pages":"309",
    "language":"spanish",
    "url_details":"http:\/\/127.0.0.1\/etnassoft_v2\/biblioteca\/diseno-agil-con-tdd\/",
    "url_download":"http:\/\/books.openlibra.com\/packed\/",
    "cover":"http:\/\/books.openlibra.com\/covers\/2011\/04\/disenoAgilConTDD.jpg",
    "rating":"",
    "num_comments":"0",
    "categories":[],
    "tags":[]
  }
]
Back to Home

3. Parámetros

id
(integer) El id del libro ?id=505
Default: null
book_title
(string) El título del libro ?book_title=javascript
?book_title="eloquent javascript"

NOTA: Si el título son varias palabras, debe entrecomillarlo.

Default: null
book_author
(string) El autor del libro ?book_author=paenza
?book_author="Adrian Paenza"

NOTA: Si el título son varias palabras, debe entrecomillarlo.

Default: null
publisher
(string) La editorial del libro ?publisher=UOC
?publisher="Green Tea Press"

NOTA: Si el título son varias palabras, debe entrecomillarlo.

Default: null
publisher_date
(string) La fecha de publicación del libro ?publisher_date=2011
Default: null
lang
(string) Lenguaje del libro ?lang=english
Default: all
keyword
(string) Palabra clave del libro ?keyword=java

NOTA: Para buscar varias palabras, se pueden concatenar utilizando el signo +

NOTA 2: Debido a las limitaciones de este parámetro, en caso de enviarse varias palabras concatenadas, la búsqueda es estricta y únicamente se devolverán aquellos resultados donde se encuentren estas palabras de forma consecutiva.

Default: null
  1. ?keyword=javascript+avanzado - Se buscan aquellos libros que contengan de forma estricta la cadena javascript avanzado.
book_title_index
(string) Búsqueda por índice-prefijo ?book_title_index=a,b

Este parámetro permite realizar búsquedas por prefijo dentro de los títulos del catálogo. Útil para crear índices.

NOTA: La principal diferencia con keyword es que este argumento requiere que la cadena a buscar se encuentre al inicio de cada título.

NOTA 2: En caso de buscarse varios índices, es interesante utilizar el parámetro order para obtener una lista de resultados ordenada.

NOTA 3: En caso de buscarse varios índices y estar el número de resultados acotado mediante num_items, solo se devuelven los primeros n items del conjunto completo encontrado, siendo n el número indicado en num_items.

Default: null
Este parámetro acepta varios índices separados por comas, lo cual indica al sistema que tiene que buscar objetos que coincidan con cada criterio/prefijo:
  1. book_title_index=z - Se buscan aquellos libros que únicamente comiencen por la letra 'z'.
  2. book_title_index=a,b - Se buscan aquellos libros que comiencen por la letra 'a' y la letra 'b'.
  3. book_title_index=0,1,2,3,4,5,6,7,8,9 - Se buscan aquellos libros cuyo título comience por un número (entre el 0 y el 9).
  4. book_title_index=s,m&num_items=100&order=a_z - Se buscan aquellos libros que comiencen por la letra 's' y la letra 'm'; se ordenan alfabéticamente y del conjunto total se devuelven los 100 primeros.
category
(string) Categoría del libro (RELACIÓN CATEGORÍAS) ?category=programacion
Default: all
category_id
(integer) ID de categoría (RELACIÓN CATEGORÍAS) ?category_id=212
Default: null
subcategory
(string) Subcategorías del libro (RELACIÓN SUBCATEGORÍAS) ?subcategory=subversion
Default: all
subcategory_id
(integer) ID de subcategoría (RELACIÓN SUBCATEGORÍAS) ?subcategory_id=211
Default: null
any_tags
(array) Etiquetas que puede contener el libro ?any_tags=[Google, SEO, SEM]

NOTA: Se buscarán aquellos libros que pertenezcan al menos a una etiqueta.

Default: null
results_range
(integer) Paginación de los resultados.
Este parámetro permite obtener segmentos concretos dentro del conjunto de resultados encontrados, siendo especialmente útil para crear una paginación.?results_range=0,10
Default: null
Este parámetro acepta dos argumentos siendo el segundo opcional. El primero indica a partir de qué objeto se envía el resultado encontrado, mientras que el segundo indica cuántos objetos se van a enviar:
  1. results_range=0,10 - Se envían los 10 primeros resultados encontrados (empezando desde el resultado 0).
  2. results_range=10,10 - Se envían los siguientes 10 resultados encontrados (se comienza desde el item 10).
  3. results_range=20,10 - Se envían los siguientes 10 resultados encontrados (comenzando desde el item 20).
  4. results_range=30&num_items=20 - Sintaxis alternativa: se envían los n siguientes resultados siendo n el número definido mediante el parámetro num_items (por defecto, 10).
criteria
(string) Criterio para crear una colección
Default: null
El criterio puede ser:
  1. most_viewed - Los libros más vistos
  2. most_commented - Los libros más comentados
  3. most_voted - Los libros más votados
  4. high_scored - Los libros más valorados
order
(string) Filtro para ordenar los resultados
Default: newest
Los filtros pueden ser:
  1. a_z - Ordenación alfabética normal (A-Z)
  2. z_a - Ordenación alfabética inversa (Z-A)
  3. newest - Ordenación cronológica (el más nuevo primero)
  4. oldest - Ordenación cronológica (el más antiguo primero)
since
(string) En catálogo de OpenLibra desde...
Default: none
Las cadenas pueden ser:
  1. today - Libros incorporados en el día actual
  2. last_week - Libros incorporados durante la última semana
  3. last_month - Libros incorporados durante el último mes
  4. last_year - Libros incorporados durante el último año
num_items
(integer) Número de libros a mostrar ?num_items=25
Default: 10
count_items
(boolean) Número items devueltos.
En lugar de devolver todos los detalles de una consulta, muestra el número total de objetos encontrados. Útil para habilitar una paginación de resultados o para testing.?count_items=true
Default: false
decode
(boolean) Normaliza la codificación.
Normalización de caracteres (UTF-8) a lo largo de todo el objeto de respuesta. Por defecto, y para mantener la retrocompatibilidad, el parámetro está desactivado.?decode=true
Default: false
Back to Home

4. Ejemplos de uso

  1. Recuperar un libro mediante su ID
    http://openlibra.com/api/v1/get/?id=589
  2. Recuperar los 10 libros más votados
    http://openlibra.com/api/v1/get/?criteria=most_voted&num_items=10
  3. Recuperar los libros más vistos de la categoria programación
    http://openlibra.com/api/v1/get/?category=libros_programacion&criteria=most_viewed
  4. Recuperar los libros más recientes etiquetados como HTML, CSS o Javascript
    http://openlibra.com/api/v1/get/?any_tags=[html,css,javascript]&order=newest
  5. Recuperar los libros que tengan en algún campo el término Javascript y se hayan publicado durante 2011
    http://openlibra.com/api/v1/get/?keyword=javascript&publisher_date=2011
  6. Recuperar todos los libros escritos por Adrián Paenza
    http://openlibra.com/api/v1/get/?book_author=adrian_paenza
Back to Home