Recherche sur le blog

mardi 22 avril 2014

[Web] Rechercher un livre avec Google Books API

Si vous souhaitez récupérer les informations d’un ouvrage en particulier, Google vous propose d’effectuer cette opération au travers de l’API “Google Books API”. Dans cet exemple, nous allons simplement travailler sur les “volumes”, en effectuant une recherche par ISBN (au format ISBN10 ou ISBN13, au choix). Il est bien sûr possible d’aller plus loin en spécifiant des termes de recherche comme le titre notamment.

En utilisant l’API en version 1, on se rend compte qu’il est possible d’interroger la base de données de Google sans pour autant spécifier de clé d’API. L’accès à certaines données publiques ne nécessite pas forcément d’authentification spécifique.
          
Rechercher un ou plusieurs ouvrage(s)
             
En se référant à la documentation, on voit qu’il est possible d’utiliser une requête de type GET en spécifiant une URL ainsi que des paramètres particuliers.
      
Le paramètre “q” doit contenir les termes de la recherche. Vous pouvez également spécifier un mot-clé spécial pour effectuer la recherche sur d’autres champs (comme le code ISBN, le titre ou bien l’auteur). Par exemple, en spécifiant “q=fleurs+inauthor:keyes” permettra d’obtenir la liste des ouvrages qui correspondent à la recherche du tag “fleurs” et qui sont écrits par Keyes.

Dans notre exemple, puisque nous voulons uniquement récupérer les informations associées à un code ISBN, nous allons indiquer ceci en guise de paramètre : “q=isbn:XXXXXXXXXXXXX” . Le code peut très bien être au format ISBN13 ou ISBN10.

En exécutant cette requête dans un navigateur en saisissant directement l’adresse, ou bien en utilisant par exemple la fonction “HTTPRequête” dans Windev, on obtient un code HTTP “200” (signifiant “OK”) et le résultat au format JSON, comme dans l’exemple ci-dessous. Les premiers attributs qui nous intéressent sont notamment “totalItems” et “items”.

json_book

  • totalItems : cet attribut nous indique combien d’attributs “items” sont présents. Cela permet de savoir combien d’éléments correspondent à notre recherche et surtout à déterminer le nombre d’éléments sur lequel on va boucler.
  • items : contient l’ensemble des ouvrages avec les éléments de base (titre, auteur, codes ISBN, identifiant, etc). Le champ “id” peut être récupéré pour afficher les informations détaillées d’un livre avec une autre requête GET.

A vous de voir comment vous souhaitez analyser ou afficher les résultats.
   
Récupérer les informations d’un ouvrage
    
Une fois que l’on connait l’identifiant du livre (attribut “id” récupéré dans l’étape précédente), on peut afficher les informations détaillées.
    
     
On retrouve une majorité d’informations qui étaient déjà présentes lors du listing à la première étape, mais lorsqu’il y a des images de couvertures de plusieurs formats (large, moyen, extra-large), l’ensemble des liens sont repris dans le résultat. Il en va de même pour les catégories. On retrouve également des informations complémentaires telles que les dimensions du bouquin. Voici le résultat obtenu en saisissant l’URL suivante : https://www.googleapis.com/book...TCAlFPjgYC.

json2

Dans une application ou une page web
      
Plusieurs langages proposent des fonctions pour analyser et manipuler le contenu au format JSON. Dans une page web comme dans une application Windows, on peut dès lors afficher des informations à l’utilisateur de manière claire. Voici un petit exemple développé dans Windev…

isbn-reader

L’application affiche le visuel – si disponible –, le résumé au format HTML (il s’agit d’un champ texte de type RTF ; le texte est converti pour pouvoir être affiché dans ce champ), le nombre de pages, le titre, les différents auteurs, les codes ISBN10 et ISBN13, la notation globale, et le nombre total d’utilisateurs ayant donné une cote. Pour aller plus loin, un bouton “Page Web” a été créé pour afficher toutes les informations dans le navigateur.
 
Et ensuite ?
   
Pour plus d’informations et pour découvrir davantage de possibilités, consultez la documentation officielle en cliquant sur le lien suivant : “Using the API – Google Books API Family”.

Aucun commentaire: