Récupérer du texte d’une page Web et le coller dans un fichier texte

Edit 21 août 2011 : le script ne semble plus fonctionner avec la dernière version de Safari. Je n’ai pas (pas encore ?) trouvé de solution.

Une des choses que j’apprécie le plus dans Evernote, c’est le webclipper qui permet d’envoyer si facilement le texte sélectionné dans une page Web directement dans une note Evernote, avec l’URL de la page.

C’est ce qui me manque le plus depuis que je suis passé à de simples fichiers txt pour gérer mes notes. Il faut tout faire manuellement : copier le passage dans la page Web, ouvrir l’éditeur de texte, coller le passage, revenir dans Safari, récupérer l’URL de la page Web, revenir dans l’éditeur et la coller et, enfin, enregistrer le fichier. Bof, quoi.

Mais nous sommes sur Mac. Pas de raison de se lamenter sur le bon vieux temps : tout est possible ! J’ai donc créé un AppleScript qui fait à peu près la même chose que le webcliper de Evernote.

C’est un joyeux mélange de javascript, shellscript et Applescript–je ne suis pas programmeur, soyez indulgent. En clair : ça risque de planter. J’ai fait de mon mieux pour éviter les erreurs dues aux caractères spéciaux, mais si la sélection ou le titre contiennent des caractères bizarroïdes… J’essayerai de l’améliorer au fur et à mesure. Toute suggestion bienvenue 😉

Votre fichier de notes ressemblera à ça:

Takingnoteapplescript
Ne vous souciez pas des couleurs, c’est mon thème par défaut dans TextMate.

Comment ça marche ?

  1. Lisez une page Web (ben oui ;-))
  2. Sélectionnez un bout de texte dans la page Web.
  3. Invoquez le script (le plus simple c’est d’utiliser un Service, voyez plus bas).
  4. Le script se charge de tout : récupérer la sélection et le titre de la page (le contenu de la balise TITLE). Créer un fichier et y coller la sélection. Si le fichier existe déjà, il se contentera d’ajouter la nouvelle sélection à la suite des autres.
  5. C’est tout, poursuivez votre lecture. Vous n’avez même pas quitté Safari 😉

Plus en détail :

Les notes sont stockées au format TXT. Le nom du fichier est basé sur la date du jour et sur le titre de la page Web (balise TITLE). Donc si vous récupérez des passages d’une même page 2 jours de suite, cela créera deux fichiers de notes. Chaque note est horodatée et suivie de son URL. Le tout est structuré en markdown, dans lequel j’écris tout.

Par défaut, les fichiers sont créés sur le Bureau du Mac. Pour changer ça, ouvrez le script et modifiez la première variable:

set the_path to "/Users/david/Desktop"

Edit: pourquoi ajouter la date dans le nom du fichier ? Pour créer automatiquement une liste de lecture datée. Etre en mesure de me rappeler quand j’ai lu tel ou tel texte. Ca devrait être intéressant sur la durée de voir ce que je lisais (je prends des notes également des livres imprimés ou des PDF) et y trouver une éventuelle influence sur ce que j’écris.

Pour créer un Service Mac OS X :

  1. Lancez Automator et choisissez Service dans les formats proposés.
  2. Ajoutez l’action Exécutez un AppleScript.
  3. Collez ce script à l’emplacement prévu dans l’action.
  4. Dans le script, modifiez la variable the_path pour qu’elle corresponde à vos besoins.
  5. Enregistrez-le dans ~/Bibliothèques/Services. Choisissez un nom qui vous parle, par exemple “Ajouter Note” ou, comme moi, “Apend2Text”.

Le Service est alors accessible via le menu Safari :

Takingnoteapplescript 3

Plus rapide encore que le menu Services, définissez un raccourci clavier :

  1. Allez dans les Préférences système -> Clavier et affichez raccourcis clavier.
  2. Dans la liste Services, choisissez votre service et cliquez à droite de son nom pour définir un raccourci clavier :

Takingnoteapplescript 2
Ici, j’utilise cmd+alt+ctrl+n.

Je le répète : je ne suis pas programmeur. C’est certainement très rudimentaire et maladroit, mais ça répond à mes besoins. Je le mets en ligne au cas où d’autres lui trouveraient une utilité.