Importer un lot de fichiers Markdown dans Day One

Edit : Si vous préférez, le code est à présent dispo sur Github.

Depuis plusieurs années, je tiens mon journal dans des fichiers TXT, en Markdown. Si ma façon d’écrire et de structurer n’a pas changé de façon radicale, elle a quand même pas mal varié au cours des années — et c’est tout le problème quand on décide de changer d’outil et d’importer d’un coup l’ensemble des entrées dans une autre application, plus spécifiquement : dans Day One, qui ne cesse de me séduire.

Comment lui faire reconnaître à coup sûr les différentes entrées et les distinguer les unes des autres, quand elles ne sont pas exactement formatées de la même façon ?

La bonne nouvelle, pour moi, c’est qu’il y a une chose qui n’a pas changé : la façon dont je nomme mes fichiers, en utilisant la date du jour. Comme ceci :

2012-0816-J-jeudi

Ce fichier correspond au journal du 16 août 2012. Il est donc aisé de savoir à quel jour appartient une entrée de ce fichier, grâce à son nom.

C’est un peu moins facile en ce qui concerne les heures associées aux différentes entrées puisque, sur les années, j’ai fait évoluer ma notation et je me retrouve avec, au choix :

  • ### 09h27
  • ### 09h et quelques
  • ### 9h
  • Avec ou sans espace entre les # et les chiffres,
  • Sans #
  • Ou même sans heure du tout.

Bref, comment faire entrer tout ça dans Day One, tout en préservant le calendrier (et les heures) des entrées ?

Première étape, découper mes fichiers de journal de façon à avoir une seule entrée par fichier (requis par Day One), au lieu d’un seul fichier pour toute la journée.

Seconde étape, pour chaque fichier, récupérer l’heure associée à l’entrée, s’il y en a une, afin de l’envoyer correctement formatée à Day One.

Il y a probablement des façons plus rapides de faire ça, mais ça fonctionne pour moi. Je le publie au cas où ça intéresserait quelqu’un. Il s’agit de deux scripts, à exécuter l’un après l’autre.

1: télécharger

2: découper les fichiers

Le premier script, Split.sh, se charge de parcourir tous les fichiers dans le dossier où vous l’exécutez et, pour chaque fichier, recherche les occurrences de ### ou ## (niveau de titres que j’utilise pour marquer les heures). Chaque fois qu’il en trouve un, il crée un nouveau fichier avec le titre et le texte correspondant, nommé sur la même base que le fichier original, incrémenté.

Script 1
Ça fera peur ou bien on trouvera ça beau. Selon les affinités.

Ainsi si le fichier 2012-0816-J-jeudi contient deux entrées :

### 9h12
Une première entrée.

### 10h12
Une autre entrée.

Sera découpé en 2012-0816-J-jeudi1 :

### 9h12
Une première entrée.

Et en 2012-0816-J-jeudi2 :

### 10h12
Une autre entrée.

Le script prend aussi en compte le cas où un fichier ne contient pas de #. Dans ce cas, l’entrée sera créée à l’heure par défaut de Day One.

3: les envoyer à Day One

Day One dispose d’une ligne de commande (à installer en plus de l’application elle-même) qui permet de créer facilement des notes à la date et l’heure de votre choix.

Le second script, à placer dans le dossier output sur le Bureau du Mac, se charge de prendre chaque fichier créé par le premier, récupère les premières lettres du nom du fichier (AAAA-MMJJ) pour définir la date de l’entrée, puis récupère la partie utile de son titre (s’il y en a un) pour définir l’heure de l’entrée. Enfin, il envoie le tout à la ligne de commande de Day One qui crée l’entrée.

Script 2
Il y a certainement mieux, mais j’en ai quand même bavé pour arriver à convertir mes fichiers TXT et leur contenu à géométrie variable dans un format compatible avec Day One. Et oui, il y a des fautes dans les commentaires (ce sera corrigé prochainement).

4: utilisation

Ce sont des scripts, il faudra donc passer par le Terminal. Brrrr…

  • Sur le Bureau du Mac, créez un dossier que vous nommerez output : il va contenir les fichiers de travail du premier script, vous pourrez le supprimer après usage.
  • Sauvegardez votre journal Day One, au cas où ça se passerait mal.
  • Copiez les fichiers que vous voulez importer dans Day One dans un dossier provisoire (là encore, pour éviter les mauvaises surprises).
  • Placez le script split.sh dans ce dossier. Puis, rendez-le exécutable : chmod +x ./split.sh et lancez-le : ./split.sh
  • Dans le dossier output, placez le script Import2DayOne.sh, rendez-le exécutable et lancez-le.

C’est tout. Votre Day One devrait à présent afficher les nouvelles entrées, aux bonnes dates.

J’aurais préféré ne pas avoir à me farcir ce travail de codage (et que Day One propose un outil d’importation un peu plus riche), mais c’est probablement parce que je suis incurablement fainéant. Les scripts sont basiques, mais me suffisent : ne vous privez pas de les améliorer.

S’il y a assez de demande (ça m’étonnerait, vu l’usage très spécifique), je veux bien essayer de créer une application Automator, histoire de rendre ça un peu… plus amical.

flattr this!

16 commentaires » Ecrire un commentaire

  1. Bonjour.

    Je découvre votre site qui m’apprend beaucoup de choses …

    Je débute en langage Markdown et j’ai installé Day One sur mon MBA.

    Il est vrai qu’il faut que j’apprenne ce langage, mais bon, s’il faut écrire constamment les balises en même temps que le texte, ça va être compliqué pour moi. :)

    Je constate que dans Day One il n’y a pas de barre additionnelle Markdown ou est-elle cachée ?

    Merci par avance de votre réponse.

    • Autant que je sache, il n’y a pas cette barre dans la version Mac — une version qui est vraiment moins développée que la version iOS : pas de vue « photos », qui est pourtant géniale, pas de géolocalisation ou de météo. Son seul (gros) avantage, en plus de tourner sur Mac, c’est le champ de recherche. Mais, comme Jean-Christophe ne cesse de le répéter, sur Mac on a la version1.7 alors que sur iOS c’est une 1.8, on peut donc espérer que… ;)

  2. Toutes mes félicitations pour ces scripts ma foi fort utiles ! …pour peu qu’on utilise Day One. Il me paraît très séduisant, mais j’en oublierais presque que je n’écris pas de journal. Mais il pourrait peut-être m’encourager à écrire sans que ça soit un journal, serait-ce adapté ?

  3. Bien sûr. N’hésite pas à essayer. Du moment que ça te convient, c’est tout bon :)

    Il n’y a rien d’anormal à utiliser un outil pour autre chose que ce que son concepteur avait imaginé. Au contraire, c’est la base de toute innovation ;)

  4. Ah, je vais peut-être me laisser tenter… En plus ils savent y faire avec la promo pour la version Mac sans date limite, il faut se décider vite !

    L’alternative dans mon cas ça serait de simplement utiliser un carnet Evernote – j’y ai déjà quelques entrées – mais Day One a pour lui une interface dont il est difficile de se rendre compte sans l’essayer… :)

  5. C’est surtout l’interface de la version iOS qui mérite que l’on s’y arrête. J’attend avec impatience une mise à jour de la version Mac, qui est très (trop) en retrait… Au moins qu’elle dispose d’un affichage « Photos », comme sur iOS, qui est, pour moi, une invitation à feuilleter mon journal (et à l’alimenter en images) :

    Img 0118.jpg

    D’ici là, si Evernote te convient ;)

  6. C’est ça qui me bloque un peu. Comme toi (apparemment) j’utiliserais principalement la version Mac, la version iOS serait plus annexe : créer une note avec une photo comme bloc-note photo (puisque je ne fais en fait qu’archiver les photos de l’iPhone, je ne les utilise pas vraiment). Le principal serait vraiment la version Mac et du texte, mais elle semble un peu basique actuellement et j’ai du mal à vraiment me rendre compte à quel point.

  7. Comme toi (apparemment)

    Non, j’utilise surtout la version iOS. La version OS X me permet de gérer le journal, de faire des modifs et, dans le meilleur des mondes, devrait me permettre d’exporter et importer en lot… Si elle offrait les mêmes options (météo/geotagging) que la version iOS, je l’utiliserais davantage.

  8. Merci David.

    Un autre souci : Day One vs iPhone ne m’importe aucune photo ! J’ai beau prendre un cliché ou en importé une via la pellicule, rien ne se passe, ça tourne en boucle sans arrêt.

    N’aurais-je pas compris quelque chose ?

  9. Je me suis décidé : ça m’incitera à écrire plus et plus de choses intimes qu’on ne met pas forcément dans un cahier constamment ouvert tel que l’est pour moi Evernote ! :)

    Merci pour tes conseils ! J’ai pour l’instant acheté la version Mac, j’attendrai une promotion pour la version iOS puisqu’elle est moins utile pour moi.

  10. écrire plus et plus de choses intimes qu’on ne met pas forcément dans un cahier constamment ouvert

    C’est une bonne idée de ne pas essayer de tout garder au même endroit.

  11. Voilà : ça fait un moment que je cherche une alternative à Evernote parce que j’ai peur d’être coincé dedans un jour. Au moins une partie n’y est plus. Tu utilises Dropbox pour iCloud pour la synchronisation ? Pour l’instant j’ai plus confiance en Dropbox, notamment pour avoir accès aux anciennes versions en cas de bug…

  12. Rétrolien : Import par lot dans Day One | davidbosman.fr

  13. J’utilise D1 depuis quelques temps, je trouve ça vraiment très bien (à part quelques frayeurs.) Auparavant j’étais grâce à vous utilisateur de nvAlt, pour tout un tas de choses relativement organisées: journal, notes, idées, ébauches, etc. Bref tout un travail de rédaction. Mais la possibilité rendue possible par DayOne d’interagir sur plusieurs appareils (iphone notamment) n’a jamais eu cette même facilité, avec NV+app. iphone. Pourtant, ça aurait dû (simples fichiers texte) mais se retrouver avec ts les fichiers NV dans une app. de texte iphone, ce n’est pas si commode (tous les fichiers, parfois longs à charger, pas tjs classés pratiquement, etc). Bref c’est là aussi qu’on voit que l’interface, ça compte!.. (pourtant le côté dépouillé de NV est plaisant)

    Pour autant, D1 est-il indiqué pour cette pratique de notation qui n’est pas seulement « journal » ? à voir.

    En attendant, c’est là que je voulais arriver: je souhaiterais idéalement exporter mes notes D1 dans NV. (histoire d’avoir aussi cette possibilité là et de continuer cette pratique et cet archivage) Mais une à une, pour respecter les catégorisations déjà mises en place, c’est qd même fastidieux. Il faudrait pouvoir exporter par lot ou par sélection les entrées de D1 vers du txt !! Ce serait vraiment génial. Ce qui serait très bien aussi, je trouve, pour travailler, c’est un « tiroir », du moins dans la version mac. (fenêtre principale avec la liste des entrées, et un tiroir avec l’entrée sélectionnée!, le principe de … NV !! ;) Espérons que ces possibilités soient rendues possibles par les développeurs prochaînement.

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>