Skip to content

Nouvelles API Zotero : produire des zolies références bibliographiques formatées

13/12/2010

Imaginez un chercheur alimentant une page HTML simple, comme sa page perso institutionnelle ou un descriptif de son cours. Il souhaite y joindre une bibliographie.

Cas 1 : il n’utilise aucun logiciel de gestion bibliographique, et écrit tout à la main. Evacuons cette hypothèse absurde et irréaliste.

Cas 2 : il utilise un logiciel de gestion bib (Endnote, BibTeX, Zotero). Il sélectionne les ressources qui l’intéressent (sur la base d’un tag, par exemple), les exporte  et les colle comme liste de références (manuels recommandés pour ses étudiants, par exemple) au sein de la page web.

Cas 3 : il utilise Zotero, et a eu connaissance de la nouvelle API Zotero, en intégrant dans sa page un bout de code. Ce bout de code « invoque » une liste de références bib correspondant à certains critères (stockées dans sa bibliothèque Zotero en ligne, avec tel tag). Et dès qu’il met à  jour sa bibliographie, sa page web est mise à jour aussi.

Je sais, présenté comme ça, ça ressemblerait presque à une publicité comparative de lessives. Alors qu’en plus je ne sais pas si les autres logiciels proposent ce genre de services. Tant pis, je continue et je développe.

Rappelons le principe : si on vous dit que Zotero propose une API, cela signifie que vous allez pouvoir construire une URL contenant des paramètres (du type : paramètres de requêtes) et qu’en produisant cette URL vous générez un fichier correspondant à votre requête, dans un format spécifique.

L’originalité de cette API-là, si l’on peut dire, c’est que son but est de fournir un fichier HTML. En effet pour une liste donnée, Zotero online proposait déjà du RSS, mais l’API rajoute un format « non structuré » et c’est un plus…

Toute la documentation Zotero est disponible ici

Comment faire ?

Commencez par aller sur votre bibliothèque Zotero en ligne (ou sur celle de quelqu’un d’autre), sélectionnez le tag ou la collection (répertoire) et affichez le fil RSS.

Par exemple, pour Marlène, sa liste de références sur les ERMS est , et le flux RSS correspondant est : https://api.zotero.org/users/11152/collections/2RVNCXT2/items

A la suite de cette URL, vous pouvez rajouter un point d’interrogation, puis différents paramètres permettant notamment de préciser :

  1. le format
    • si vous mettez : format=bib, vous obtiendrez une liste en HTML
    • si vous mettez : format=atom, vous aurez une liste au format Atom (équivalent de RSS)
  2. style (dans l’hypothèse où vous avez choisi « format=bib »)

Pour désigner le style à utiliser :

  1. ne sont actuellement utilisables que les styles fournis par défaut avec Zotero (les précieux styles français de Stéphanie n’en font pas encore partie !). Par « support for other repository styles and arbitrary styles is forthcoming« .
    15 styles sont concernés (en voici la liste)
  2. il vous faut désigner le style par son code et non pas son nom.
    Comment connaître ce code ? En consultant la liste, justement, vous pouvez survoler chaque lien avec la souris. La fin de l’URL vous donne le code : le style « American Sociological Association » pointe vers l’URL http://www.zotero.org/styles/asa. L’identifiant du style est donc « asa »

Donc pour obtenir la liste en format ASA :

https://api.zotero.org/users/11152/collections/2RVNCXT2/items?format=bib&style=asa

Intégrer une liste bibliographique dans une page : <iframe>

Il y a certainement des méthodes plus propres. Mais la plus simple, je pense (ou la plus immédiate), est d’appeler le contenu de la page dont l’URL est indiquée ci-dessus avec un <iframe>. Par exemple en intégrant dans la page le code :

<iframe src="https://api.zotero.org/users/11152/collections/2RVNCXT2/items?format=bib&style=asa" frameborder="0" height="600" width="100%"/>

Ce qui permet d’afficher dans la page un cadre de 600px de hauteur, prenant toute la largeur, et sans bordure. En cas de mise à jour de la bibliographie sur Zotero, la page se met donc naturellement à jour.

17 commentaires
  1. 13/12/2010 12:09

    Cool. Mais (j’ai du passer à côté) peux-tu préciser l’intérêt de ta manip’ par rapport au simple import de la page de biblio zotero dans une iframe?

  2. 13/12/2010 12:29

    @shaunlemouton : Je n’ai pas compris ta question…
    Tu sous-entends qu’avant, on pouvait faire un « simple import de la page de biblio Zotero dans une iframe » ? Tu peux me décrire précisément ce que tu entends par là ?

  3. 13/12/2010 12:47

    L’intérêt de l’utilisation de l’API est que l’on obtient uniquement les données brutes (les références bibliographiques balisées en HTML).
    Dans une iframe « classique » avec l’URL « canonique » de la page Zotero, on aurait la page entière qui serait intégrée, avec toute la mise en page et les éléments graphiques (en fait une page dans la page…), ce qui est très peu esthétique.
    2 bémols :
    – le code inséré à l’intérieur de l’iframe est non « manipulable » (on ne peut pas appliquer de styles par exemple ; si quelqu’un connaît une technique je suis preneur…)
    – le temps de chargement semble un peu long

  4. 13/12/2010 14:09

    @Regisrob : je suis d’accord sur la seconde frustration : l’affichage de la liste est assez lent
    Sur la première, il faut tout de même noter que la liste globale est dans une <div class="csl-bib-body">
    et que chaque item est dans un <div class="csl-entry">
    Il est vrai qu’il y a déjà un attribut style à l’intérieur de chaque div, mais ça n’empêche pas d’attribuer une police, une couleur, une taille, etc. spécifiques.

  5. 13/12/2010 17:59

    @Lully : j’ai l’impression que ce n’est pas si simple de manipuler le contenu d’une iframe externe (application de styles ou scripts). J’ai fait plusieurs essais avec du Jquery, sans succès…
    J’ai lu quelque part que « as regards the permissions, if you are loading a page in the iframe that is from a different domain, you won’t be able to access it due to security restrictions. » (http://stackoverflow.com/questions/364952/jquery-javascript-accessing-contents-of-an-iframe)
    Cet aspect est certes assez secondaire, mais c’est un peu dommage quand même pour le côté visuel.
    En tout cas merci pour ce billet instructif

  6. vegdud_doc permalink
    28/04/2011 13:02

    J’essaie d’utiliser l’API selon vos explications mais j’obtiens à chaque fois le message suivant ; « Cannot generate bibliography with more than 150 items ». En effet mon site zotero contient plus de 400 références. Y a-t il un moyen de faire afficher les 150 derniers items ?

  7. 28/04/2011 17:11

    @vegdud_doc : pour ma part, je n’en sais rien. S’il existe un utilisateur émérite de Zotero dans la salle, il est le bienvenu pour apporter ses lumières….

  8. 28/04/2011 20:06

    @vegdud_doc : en fait l’API Web de Zotero limite les requêtes à 99 items au maximum. Par défaut, cette limite est fixée à 50 (voir dans la doc de l’API : le paramètre « limit » n’autorise qu’un nombre de 1 à 99 => http://www.zotero.org/support/dev/web_api/read_api#parameters_for_format_atom).

    Concernant le message d’erreur, le problème est le suivant :
    La limitation évoquée ci-dessus ne semble pas être opérante dans le cas d’une requête avec le format « bib » : si le nombre d’items à rapatrier est trop important (+ 50 items ? + 150 ?), alors la requête plante et renvoie un joli code d’erreur « 413 Request Entity Too Large » avec le message « Cannot generate bibliography with more than 150 items ».
    Malheureusement, le paramètre « limit » ne marche pas avec en association avec le paramètre format= »bib », il fonctionne uniquement pour le format « atom » (dans ce cas tout est ok).

    Exemples :
    La requête suivante plantera si le nombre d’items est trop élevé : https://api.zotero.org/users/11152/collections/2RVNCXT2/items?format=bib&style=asa
    En revanche cette requête là fonctionnera très bien : https://api.zotero.org/users/11152/collections/2RVNCXT2/items?format=atom (avec la possibilité d’ajouter les paramètres « content », « limit », « sort », etc.)

    NB : le cache de Firefox semble très capricieux avec ces requêtes : j’ai constaté que pour recharger correctement une page après modif, il fallait à chaque fois fermer l’onglet, vider le cache puis ré-ouvrir un onglet.

    Moralité : l’API est assez limitée et, dans le cas de bibliothèques Zotero très fournies, il est préférable de recourir à Atom (flux RSS) pour diffuser ses références bibliographiques sur un site web, plutôt qu’à un affichage direct en HTML (via une iframe).
    Pour contourner les limitations, on peut envisager de scinder sa bibliothèques en plusieurs collections de taille limitée et faire plusieurs requêtes successives sur une même page.

    A mon avis, dans l’état actuel, il est encore préférable d’intégrer ses références manuellement en utilisant les fonctions d’export/citation de son Zotero local.

  9. vegdud_doc permalink
    29/04/2011 11:45

    Merci pour les infos. Je vais creuser l’idée de travailler par collection en attendant que de nouvelles solutions se mettent en place.

  10. plic permalink
    07/11/2011 20:37

    Merci pour ces infos, serait-il possible d’obtenir cette liste html triée par ordre chronologique plutôt que par ordre alphabétique ?

    En vous remerciant par avance

  11. 08/11/2011 09:10

    @plic : la réponse est malheureusement simple : non.
    Les paramètres disponibles pour cette API sont les suivants (liste présentée sur la page tutoriel de l’API) :
    format, key, version, itemType, q, tag

    Il n’est pas possible de rajouter une consigne de tri (qui aurait ressemblé à un paramètre en bout d’URL du type : &sort=date). En tout cas pas pour l’instant.

    En revanche, si vous voulez pouvoir distinguer, par année, vous pouvez essayer la chose suivante :
    extraire uniquement les références bib de l’année 2011 (avec le paramètre &q=2011), puis celles de 2010 (avec &q=2010), etc.
    Il y aura néanmoins du « bruit » si certaines références datant de 2011 mentionnent dans leur titre l’année 2010, par exemple (« La consommation des ménages en 2010 »).
    Mais c’est la seule technique que je vois pour le moment…

  12. 15/11/2012 16:37

    Merci pour l’article, j’utilise l’API selon vos explications mais j’obtiens à chaque fois le message suivant ; « Cannot generate bibliography with more than 150 items »s’il te plais explique moi comment faire?

Trackbacks

  1. Nouvelles API zotero | Zotero francophone
  2. API Zotero pour générer une biblio qui se met à jour automatiquement | docnews
  3. Nouvelles API Zotero : suivi d’une bibliographie dans un fichier HTML | Observatoire des technologies
  4. Nouvelles API Zotero : suivi d’une bibliographie dans un fichier HTML | Bac à sable
  5. Nouvelles API Zotero : suivi d’une bibliographie dans un fichier HTML | Observatoire des technologies de l'IST

Les commentaires sont fermés.

%d blogueurs aiment cette page :