Comment compliquer la publication de fiches de lecture en prétextant que c’est la faute de l’iPad

La publication de métro[zen]dodo depuis l’iPad est d’autant plus aisée que la structure des notules est simple. Un titre, une date, un thème, le plus dur reste à écrire. La structure des notes photographiques est à peine plus compliquée. Un dossier, un fichier texte et un fichier image, le plus dur reste à trouver la couleur de la bordure encadrant la page1. Mais la structure des notes de lecture est nettement plus complexe.

Outre mes rares critiques et mes notes parcellaires, elles contiennent de nombreuses informations archivistiques, car elles forment d’abord et avant tout le catalogue (incomplet) de ma bibliothèque. Pour éviter les erreurs et la tendinite, j’ai depuis longtemps automatisé leur création avec BookFinder, un petit script en Python exploitant l’API du « club partenaires » d’Amazon.

Mais voilà : l’accès à cette API est conditionné à la réalisation d’un certain chiffre d’affaires, chiffre d’affaires qu’il est difficile d’atteindre sans utiliser… l’API. Cette contradiction dans les termes montre comment Amazon délaisse les petits blogueurs qui ont fait son succès au profit des grands agrégateurs qui font sa fortune. Loin de moi l’idée de le lui reprocher, encore plus loin de moi l’idée de multiplier les liens affiliés pour gratter quelques euros de commission.

Exit Amazon donc, et place au projet Open Library de l’Internet Archive. À défaut d’être exhaustif, son catalogue d’une vingtaine de millions d’ouvrages est raisonnablement fourni, et son API est suffisamment robuste pour être utilisée par les systèmes de gestion de bibliothèque Koha et Evergreen. Les couvertures sont rarement présentes, et rarement utilisables quand elles le sont, mais Amazon ne fait pas beaucoup mieux avec ses miniatures affreusement compressées.

Je suppose que je pourrais utiliser la nouvelle version de BookFinder dans Pythonista, mais je n’ai pas adopté l’iPad pour me compliquer la vie, et je préfère utiliser les fonctions d’intégration continue de Github. Cette fois, l’action est déclenchée par la création d’une issue comportant le label bookread. BookFinder récupère l’ISBN indiqué dans le titre de l’issue, cherche le livre correspondant dans la base Open Library, crée le dossier indiqué dans le corps de l’issue, puis remplit la fiche de lecture.

on:
  issues:
    types: opened
    
jobs:
  bookread:
    if: contains(github.event.issue.labels.*.name, 'bookread')
    runs-on: ubuntu-latest
    steps:
        - name: Checkout repo
          uses: actions/checkout@v2
          with:
            submodules: 'recursive'
          
        - name: Set up Python
          uses: actions/setup-python@master
          with:
            python-version: '3.x'
          
        - name: Run BookFinder
          run: |
            cd content/biblio
            python ../../archetypes/BookFinder/bookfinder.py --isbn ${{ github.event.issue.title }} --slug ${{ github.event.issue.body }}            
          
        - name: Commit changes
          run: |
            git config --local user.name "GitHub Bot"
            git config --local user.email "action@github.com"
            git add -A
            git commit -m "biblio : créer nouvelle fiche de lecture"
            git push origin main
                        
        - name: Close issue
          uses: peter-evans/close-issue@v1
          with:
            comment: "Nouvelle fiche de lecture disponible."

Quelques secondes plus tard, je peux la récupérer dans Working Copy. La fiche prend la forme d’un brouillon : je peux la créer avant même d’avoir ouvert le livre, ajouter progressivement mes notes, et la publier à la fin de la lecture. Cette méthode est tellement confortable que je l’utilise maintenant sur mon Mac !


  1. Je finirai pas automatiser cette procédure en réutilisant mon code d’extraction des couleurs des icônes d’application. ↩︎