API Semantic Scuttle

Comme j’en ai déjà parlé précédemment, j’ai basculé sur Semantic Scuttle pour conserver mes bookmarks.
Ce projet très intéressant permet l’utilisation d’une API similaire à celle de delicious, bien qu’il me semble qu’elle soit moins complète.
Comme concrètement j’avais besoin de réaliser l’affichage de mes 10 derniers bookmarks dans la colonne ci-contre de mon site (comme je faisais déjà avec delicious), j’ai du mettre un peu les mains dans le cambouis de l’API de SemanticScuttle.
En effet, en creusant un peu, j’ai constaté que Semantic Scuttle ne fournissait pas tip top ce qu’il me fallait… J’ai donc du adapter ce qui existait pour moi. Et je le poste, au cas où ça pourrait servir à quelqu’un d’autre.
Pour commencer, il faut savoir que Semantic Scuttle fourni un script (rss.php) qui accepte des paramètres comme “count” pour afficher un certain nombre d’articles. Un exemple : http://links.ubilogic.net/rss.php/christophe?count=10
Ceci affiche mes bookmarks mais limité à 10. Il s’agit bien évidemment des 10 derniers.
Maintenant, pour utiliser ça un peu plus facilement en javascript, j’aurais préféré un rendu en json comme delicious le permet.
Qu’à cela ne tienne, j’ai honteusement copié le script rss.php et je l’ai transformé en json.php.
A partir de là, ce fut très simple de convertir le template d’output pour obtenir du json. Je n’ai pas de grand mérite pour la transformation (bah, parfois on fait des p’tits trucs vite fait, bien fait qui peuvent servir sans grande prétention).
J’ai aussi du copier le script rss.tpl.php pour en faire un json.tpl.php.
Et voici comment je l’utilise pour faire apparaître mes 10 derniers liens dans la barre latérale de ce site, ci-contre :
<div id="my_links">
<script type="text/javascript" src="http://links.ubilogic.net/json.php/christophe?count=10"></script>
<script type="text/javascript">
var ul = document.createElement('ul')
for (var i=0, post; post = ScuttleLinks.posts[i]; i++) {
var li = document.createElement('li')
var a = document.createElement('a')
a.setAttribute('href', post.u)
a.appendChild(document.createTextNode(post.d))
li.appendChild(a)
ul.appendChild(li)
}
document.getElementById('my_links').appendChild(ul)
</script>
</div>
Ce bout de html avec un peu de javascript est directement inséré là où je veux qu’il apparaisse. La mise en forme dépend, bien entendu, des CSS que je n’ai pas retranscrit ici.
Bon, les puristes trouveront certainement à redire sur la forme mais en même temps, ça fonctionne super bien.
Et pour ceux qui le veulent, voici les scripts dans un zip.
Le json.php se place en racine de semanticscuttle et json.tpl.php se place sous data/templates/
Enjoy!