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é.

flattr this!

15 commentaires » Ecrire un commentaire

  1. Plutôt pas mal pour un non programmeur !!! ;-)

    Juste une suggestion pour la localisation du fichier créé, n’y a-t-il pas moyen de remplacer /User/david/Desktop par un truc plus universel comme $HOME/Desktop ?

    Ça éviterait de faire éditer le script à des gens qui ne sont pas du tout programmeur :-)

    • Merci :-)

      J’ai essayé de mettre un path plus générique, mais rien ne semble marcher à part le chemin d’accès complet « en dur ». Je vais creuser. Faudrait que je lise toute a doc AppleScript.

  2. Han ben voilà, je crois que j’ai trouvé une solution :

    set filePath to (path to desktop as Unicode text)
    Je vais modifier le script et du coup je peux même proposer le « service » en téléchargement :)

    Edit: voilà le script programmé pour copier les fichiers sur le Desktop de chaque user (enfin, si je me suis pas planté). Si vous pouviez le tester et me dire quoi… Si ça marche je ferais un billet simplifié pour l’annoncer :-)

    Le script, à dézipper et à placer dans ~/Bibliothèques/Services.

  3. Tout d’abord bravo, j’imagine que ça ne doit pas être facile quant on est pas programmeur ! J’ai essayé et ça marche ! J’ai juste remplacé le chemin de création des fichiers et tout roule. ;) Une bonne voie pour l’améliorer serait que le script soit utilisable à partir de n’importe quelle application, comme Aperçu par exemple. ;)

    • Ah ça, le faire marcher dans Aperçu… C’est prévu que j’essaye mais vu que la récupération de la sélection est basée sur du javascript… et vu que je lis essentiellement dans Instapaper sur le Mac (dans Safari), j’ai pas encore cherché.

      Tiens,ça me fait penser que j’avais prévu de faire un petit billet sur Instapaper :-)

      A propos du script: vous étonnez pas s’il plante dans le sélections complexes (genre avec des bouts de codes informatique dans le texte, des  » ou des () ou [], etc.): j’ai un mal de chien à trouver une solution viable pour éviter les problèmes avec ce genre de caractères spéciaux. C’est agaçant.

  4. Rétrolien : Ajouter des notes automatiquement dans Notational Velocity | davidbosman.fr

  5. Rétrolien : Un exemple d’utilisation de TextExpander | davidbosman.fr

  6. Rétrolien : Un script pour les amateurs deprise de notes en ligne | davidbosman.fr

  7. Bonsoir ! en parcourant ton site, et en tombant sur cet article, j’ai trouvé cette commande magnifique et hyper pratique ; mais j’ai mis en application, d’abord avec la première méthode, puis tout simplement en prenant le « service » directement (en remplacant le bon chemin pour qu’il aille dans le dossier de mon choix) Mais, si le titre de la note crée est bon (il oublie virgules et apostrophes, mais peu importe), et l’emplacement où il la crée aussi, par contre, il ne me colle pas ma sélection de texte de la page Safari. Voilà ce que j’obtiens si j’ouvre le fichier txt :

    21h22:29

    …missing value

    Source

    Missing Value. J’ai raté quelque chose dans ma manipulation ? Merci !

  8. Oui, je vois ça. J’ai cherché mais je ne vois pas ce qui merde. Apple a peut-être changé quelque chose pour des questions de sécurité ?

    Désolé, mais pour le moment du moins, le script ne semble plus opérationnel.

  9. Hello Pas du tout grave, merci pour la réponse ! Je pensais que j’avais raté un truc. Ça m’a permis d’ouvrir automator !! (en fait je l’avais fait une ou deux fois pour renommer des fichiers, ou un truc comme ça!). C’est vrai que ce « service » était pratique, en fait quand on s’y penche il y a vraiment des moyens géniaux pour simplifier des opérations.. Au plaisir de lire tes articles!

  10. Bravo et merci pour ce petit script, c’est exactement ce que je cherchais pour mon mémoire de projet (récupération des sources, etc. )

    J’ai trouvé ici la solution au problème « missing value » : il faut remplacer set selected_text to (do JavaScript "(getSelection())" in document 1) par set selectedText to (do JavaScript "var x = ''+document.getSelection();x" in document 1) as string, et le script fonctionne à nouveau (testé sous OS X 10.8.1/Safari 6

Laisser un commentaire

Les champs obligatoires sont marqués d'une *.


Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>