My Opera is closing 1st of March

Croquemichette

Un blog qui veut dire tellement de choses...

Subscribe to RSS feed

Première utilisation de l'API d'Opera Link

, , , ...

Cela faisait un moment depuis mon dernier post (encore une fois), cette fois-ci, je reviens avec quelque chose de nouveau.

Une longue histoire de signets...

Je suis un utilisateur d'Opera depuis un bon moment déjà. Mon véritable passage à ce navigateur doit dater de 2002 ou 2003. Au fil des années, j'ajoutais des signets à mon cher navigateur, sans pour autant leur donner la moindre importance. J'ajoute un signet, je le perds le lendemain, tant pis.

Toutefois, ce désintéressement a évolué au fil du temps. Mon signet sans importance a intégré une liste de signets qui se trouvaient dans mon fichier bookmarks.adr que je conservais précieusement love

Opera Link

Depuis l'arrivée d'Opera Link, cet intérêt grandissant s'est accentué. La synchronisation des signets, le rêve de tout bon internaute. Garder dans un coffre-fort, toute la richesse de sa navigation.

Mais que se passerait-il si ce coffre-fort était forcé ? yikes

Oui, je sais, vous allez me dire que les données stockées chez Opera ne courent aucun risque, que tout est répliqué à l'infini sur des décennies. Oui, mais, on ne sait jamais...

Je n'ai donc cessé d'espérer de voir apparaître un système permettant de récupérer facilement toute la liste de mes signets, sans avoir à revenir 5 ans en arrière (copie du bookmarks.adr).

API Opera Link wizard

Et tout récemment, Opera a exaucé mon souhait : mettre à disposition une API d'Opera Link.

Lecture, écriture des favoris, des notes, des moteurs de recherche, du Speed Dial, de l'URL filter. Le pied ninja

Et Opera n'a pas fait les choses à moitié, elle a mis à disposition des utilisateurs (enfin, surtout des développeurs) la librairie permettant d'accéder à ces informations dans différents languages, le tout, sous licence BSD.

Je me suis donc atteler à la tâche d'utiliser ces librairies pour réaliser un script (en me basant sur un exemple assez simple fourni avec la librairie) permettant de faire ce que je voulais : récupérer mes données en local.

Pour réaliser ceci, j'ai utilisé la librairie Perl (un bien beau langage).

Ce script est relativement simple, sauf à sa première exécution. En effet, au premier lancement, il est demandé à l'utilisateur de saisir des codes bizarres jester

Pour faire simple, afin de pouvoir utiliser l'API, il faut créer un point d'entrée (en cliquant ici), associé à son compte Opera Link, afin d'obtenir deux choses : un customer key, et un customer secret. Deux codes plein de caractères.

Ces codes sont nécessaires à la connexion à l'API.

Le script

Il se découpe en plusieurs parties.

Tout d'abord, je parlais un peu plus haut des customer key et secret. Ils sont demandés dès le lancement du script. si le script ne les a pas, il ne peut pas avancer.

Ensuite, le script va avoir besoin de se connecter à Opera Link, il lui faudra donc les identifiants de connexion afin d'obtenir un code d'accès (ça fait beaucoup de codes, hein ?). Ce code d'accès permettra d'obtenir un access token, et un access token secret (encore 2 codes).

À partir de là, l'utilisateur n'a plus rien à saisir, la librairie d'Opera va utiliser ces access token et secret pour récupérer ce que vous lui demandez.

Afin de ne pas avoir à ressaisir toutes ces informations à chaque fois, un fichier (~/.operalinkrc) est créé (une fois la récupération des access token et secret terminée) avec les informations suivantes :

  • Identifiant de l'utilisateur
  • L'access token
  • L'access token secret
  • Le customer key
  • Le customer secret

Au final, seuls les access token/secret et l'identifiant (pour nommer le fichier de sortie) seront utilisés. Les customer key/secret seront probablement supprimés par la suite.

Les options du script

  • --help : Affiche l'aide ;
  • --login=<login> : Permet de spécifier l'identifiant de connexion à Opera Link (évite d'avoir à le saisir manuellement lors de l'exécution du script) ;
  • --password=<password> : Va de paire avec l'identifiant à Opera Link (il ne sera stocké nulle part) ;
  • --item-type=<bookmark, note, etc.> : type d'objet à récupérer ;
  • --download : Indique au script de télécharger les informations liées au type d'objet (exemple, téléchargement de tous les favoris au format Json) ;
  • --output=<fichier de sortie> : Indique dans quel fichier stocker les données téléchargées (si pas spécifié, le fichier sera nommé sous la forme YYYY-MM-DD-HHmm-<identifiant>-<item-type>.json dans le dossier courant ;
  • --get-all : Affiche la liste de tous les objets du type choisi, et les affiche sous forme d'arborescence ;
  • --get-root : Affiche la liste de tous les objets qui se trouvent à la racine pour le type choisi ;
  • --get-by-id=<id> : Affiche la liste de tous les objets qui se trouvent sous l'id spécifié pour le type choisi.

Exemples

Je lance le script pour la première fois, je veux récupérer dans un fichier local tous mes favoris, et je ne veux pas saisir mes identifiants en plein milieu de l'exécution du script :

perl opera-link-api --login=bob --password=mypassword --download --item-type=bookmark

En sortie, je vais avoir :

You first need to register an API application on https://auth.opera.com/service/oauth/applications/ to get a customer key, and a customer secret.
Enter the customer key : <mon customer key>
Enter the customer secret : <mon customer secret>

Connecting to https://auth.opera.com/service/oauth/authorize...
Authentication successful (access code : XXXXXXX)

Output file : 2010-12-11-0112-bob-bookmark.json

Je souhaite ensuite afficher mes notes :

perl opera-link-api --item-type=note --get-all

Puis, je vais vouloir les sauvegarder au format Json dans un fichier de mon choix :

perl opera-link-api --item-type=note --download --output=/tmp/mes_notes

À noter que pour le moment, seuls les signets et les notes fonctionnent.

Récupérer le script

Il vous faudra récupérer, et installer la librairie d'Opera Link :

git clone https://github.com/operasoftware/perl5-net-operalink.git
cd perl5-net-operalink
make && make test
sudo make install
Il est possible que vous deviez installer certains paquets Perl :
  • libfile-slurp-perl
  • libterm-readkey-perl
  • curl

Le script (distribué sous licence GPL) est disponible ici. N'hésitez pas à me faire des retours.