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
Default: null
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
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
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