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é.
Ç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.
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.
Pingback: Import par lot dans Day One | davidbosman.fr