Logo noremember

Aller au contenu | Aller au pied de page | Aller à la recherche

Loading tweets loading...

Tag - google reader

Fil des billets - Fil des commentaires

jeudi, juin 12 2008

Accéder à du contenu authentifié ... en 2 lignes de shell

Le souci : récupèrer du contenu protégé par un couple login / pass classique

Décidément les outils GNU n'ont pas fini de me surprendre.
Le dernier en date c'est wget.
Quand on voit la taille du man on se dit tout de suite qu'on peut faire un paquet de choses avec cet outil.

L'usage le plus courant de wget est le téléchargement de fichier sur la toile, que ceux ci soit stocké en http, ftp ...
Récemment je cherchais à récupérer la liste des flux que je consulte dans google reader.
Sous Reader l'export se fait au format standard OPML.

Bien sûr pour accéder à l'export il faut s'authentifier.
J'ai d'abord pensé faire un petit script ruby mais dans ce cas présent il y a mieux.
Si si !

S'authentifier avec sauvegarde des cookies

L'idée est de procéder en deux étapes :

  1. Se connecter en soumettant login / pass et récupérer le cookie pour le stocker dans le fichier de notre choix.
  2. Ré-utiliser ce cookie pour accéder au fichier qui nous intéresse [1].

Chaque étape se fait en une ligne de commande :

 
wget "https://www.google.com/accounts/ServiceLoginAuth?service=reader" --post-data="PersistentCookie=1&Email=email&Passwd=pass" --no-check-certificate --save-cookies="/tmp/gcookie" --output-document=/tmp/null 
wget "http://www.google.com/reader/subscriptions/export" --no-check-certificate --load-cookies="/tmp/gcookie" --output-document="~/opml"

J'ai volontairement utilisées les options longues qui sont réellement explicites.

Dans la première étape on accède à l'url d'authentification et on soumet le formulaire en POST [2] en lui passant les différentes valeurs (notre email, notre mot de passe, et l'option pour rester connecté à base de cookie).
La valeur 1 est la valeur de la checkbox cochée.

Le --no-check-certificate nous permet de passer la validation du certificat https comme c'est souvent le cas, notamment pour les certificats auto-signés.
Le --save-cookies nous permet de spécifier le path ou sera stocké le cookie. Si l'authentification échoue le fichier sera quand même créé mais uniquement avec les headers de wget.
Enfin la page récupérée ici (page qui nous indique le succès ou non de notre connexion) ne nous intéresse pas, elle est donc copié dans le trou noir qu'est /dev/null.

La deuxième étape reprend les mêmes options que la première mise à part le --load-cookies qui nous permet d'accèder à une page en se basant sur notre fichier de cookies précédemment créé.
C'est tout, ton fichier de souscriptions est désormais dans ton $HOME.

Difficile de faire plus rapide même si le script est minimaliste et ne vérifie pas si l'authentification s'est bien passée etc ...

Notes

[1] Et ne pas oublier de l'effacer une fois le fichier récupéré.

[2] D'ailleurs ça marche aussi en passant les paramètres et leurs valeurs respectives en GET.

samedi, avril 19 2008

Synchroniser Akregator et Google Reader, c'est pour bientôt.

La problématique

Même si on est de plus en plus dans une perspective full web où tout et n'importe quoi se transforme en webapp, dans bien des cas rien ne vaut une bonne application desktop.

Bien souvent, si l'on utilise un service online, c'est parce qu'on peut l'utiliser partout, et retrouver ses données dans l'état dans lequel on les a laissées.
Dans mon cas c'est ce dernier point qui m'a fait switcher d'Akregator vers Google Reader. Il est vrai que c'est pénible de n'avoir aucune donnée synchronisée d'un poste à l'autre.

Toutefois Akregator semble avoir fait pas mal d'avancées en la matière et de petites choses se mettent en place.
Un module de synchronisation a été créé et permet pour l'instant de synchroniser les flux en ajout et en suppression.
Pour l'instant il n'est pas possible de synchroniser les articles et leur état.

D'après l'équipe KDE en charge de ce module la difficulté n'est pas réellement technique puisque les API de google sont assez simples à utiliser.
Ce qui pose problème c'est que les informations ne sont pas stockées de la même manière d'un gestionnaire de flux à l'autre.
Toute la difficulté est de faire un module le plus générique possible puisque l'objectif est de pouvoir se synchroniser avec un maximum d'agrégateurs en ligne.

Disponible pour quand ?

Le module de synchronisation des flux uniquement devrait être disponible dans KDE 4.1.
Pour une synchronisation complète il faudra attendre la sortie du nouveau gestionnaire d'informations personnelles de KDE : Akonadi, ce qui devrait coïncider avec la version 4.2 de KDE.

Une preview ?