Vue normale

PhotosExport - Enfin un vrai backup de vos photos iCloud

Par : Korben
25 janvier 2026 à 08:17

Si vous utilisez un Mac et un iPhone, vous savez que l'app Photos d'Apple c'est un peu beaucoup une prison dorée. C'est génial tant qu'on reste chez Apple, mais dès qu'on veut sortir ses photos pour en faire une vraie sauvegarde sur un NAS ou un disque externe, ça devient vite compliqué.

Y'a bien une option "Exporter les originaux non modifiés" qui fait le job, mais elle n'inclut pas vos retouches, vos recadrages et la structure des dossiers est souvent inexistante. Du coup, on se retrouve avec un vrac de fichiers IMG_1234.JPG pas très sexy.

Mais vous me connaissez, j'suis toujours dans les bons coup et j'ai une bonne nouvelle pour vous. Rui Carmo, un développeur qui en a eu marre (comme nous), a codé un petit outil en Swift baptisé PhotosExport . Ça fonctionne en ligne de commande et ça va piocher directement dans votre librairie Photos pour extraire vos fichiers proprement.

Par défaut, l'outil se concentre sur l'année en cours, mais avec les options --year et --end-year, vous pouvez remonter le temps et tout récupérer d'un coup.

PhotosExport crée une hiérarchie Année/Mois (genre 2024/01/) et renomme chaque fichier avec un timestamp précis. Ça évite les collisions de noms (avec un petit suffixe si besoin) et ça met de l'ordre dans le chaos.

Ce qui est cool, c'est que si vous ajoutez l'option --metadata, il tente aussi d'exporter les infos (lieux, dates, données techniques...) dans un fichier JSON à côté de l'image. C'est du "best effort" (car il ne va pas forcément récupérer la reconnaissance des visages ou des trucs trop spécifiques à Apple), mais ça permet de garder une trace des infos essentielles si un jour vous changez de crémerie.

Attention quand même, il y a un petit prérequis : il faut être sous macOS 13 (Ventura) ou plus récent. Et au premier lancement, macOS va vous demander d'autoriser l'accès à vos Photos (le fameux TCC). C'est normal, c'est pour la sécurité.

L'installation se fait via make build si vous avez Xcode ou les outils de développement. Ensuite, vous lancez la commande, et hop, ça mouline. Le mode incrémental est pas mal aussi car il ignore les fichiers qui existent déjà dans le dossier de destination, ce qui permet de relancer l'outil sans tout réécrire.

Vous pouvez même imaginer scripter ça pour que ça tourne régulièrement vers votre NAS, à condition de bien gérer les permissions d'accès au niveau du terminal ou du script (ce qui peut être un peu sioux avec les sécurités d'Apple, mais ça se fait).

Si vous cherchez aussi à sécuriser le reste de votre vie chez Apple, jetez un œil à ma méthode pour sauvegarder vos données Apple Notes ou encore comment sauvegarder votre iPhone sur un disque externe . C'est toujours mieux d'avoir une copie locale, car on ne sait jamais ce qui peut arriver à un compte iCloud (Genre si Donald Trump décide de tout couper...).

Bookokrat - Le lecteur EPUB pour les accros du terminal

Par : Korben
22 janvier 2026 à 11:49

Vous vous souvenez de l'époque où rien que de lire un texte sur un écran noir suffisait à notre bonheur ? C'était un temps où chaque pixel comptait et où la souris était encore en option... Alalala, hé bien, pour ceux qui ont gardé cette âme pure ou qui passent la plupart de leur temps dans un shell, je vous ai déniché Bookokrat , un lecteur EPUB conçu EXCLUSIVEMENT pour votre terminal.

Vous allez voir c'est super pour lire des livres pendant le boulot discretos ^^.

L'outil propose une interface en "split-view" avec les EPUB de votre répertoire courant à gauche et votre lecteur à droite. Et malgré le côté austère du terminal, Bookokrat ne fait pas de compromis puisqu'il gère comme un chef le MathML pour les formules mathématiques et affiche même les images !

Attention toutefois, le rendu dépendra de votre terminal. Par exemple sur Kitty, Ghostty ou iTerm2 c'est le top ! Mais sur Alacritty ce sera un peu moins bien, quand au Terminal.app de macOS qui ne supporte pas bien les protocoles graphiques, je vous laisse imaginer la lose.

Côté navigation, c'est du classique avec des raccourcis inspirés de Vim (hjkl pour les intimes ^^) afin de scroller, changer de chapitre ou chercher dans le texte. L'outil gère aussi les signets automatiques ce qui est pratique quand on n'a pas le temps de finir "Guerre et Paix" d'une traite et vous pouvez même ajouter des notes directement dans le texte pour ne rien oublier.

Y'a aussi un "zen mode" (Ctrl + z) pour ceux qui ont du mal à se concentrer, même si je trouve qu'il est un peu inutile, et comme c'est codé en Rust, c'est fluide de fou !

Maintenant, pour l'installer, c'est facile... Sous macOS, un coup de Brew :

brew install bookokrat

Sinon, via Cargo :

cargo install bookokrat

Voilà si vous cherchez un moyen propre de lire vos ebooks sans quitter votre shell, Bookokrat fera grave bien le taff. Puis je trouve que ça redonne un petit goût de nostalgie façon Edit à la lecture et c'est pas pour me déplaire.

Dembrandt - Aspirez le design system de n'importe quel site en une commande

Par : Korben
6 janvier 2026 à 08:30

Vous bossez sur un projet et vous vous dites "Tiens, le site de [insérez ici une grosse boîte] a un design plutôt bien foutu, j'aimerais bien voir comment ils ont structuré leurs css".

Hé bien y'a un outil pour ça, et il s'appelle Dembrandt .

Dembrandt en action

En gros, c'est un petit outil en ligne de commande qui va analyser n'importe quelle URL et en extraire tout le design system : les couleurs (primaires, secondaires, variables CSS), la typographie (familles, tailles, graisses), les espacements, les bordures, les ombres et même les patterns de composants UI.

Le truc s'installe en une ligne avec npm (npm install -g dembrandt) et après vous avez juste à taper dembrandt stripe.com par exemple. En moins d'une seconde, l'outil va alors faire un rendu de la page avec Playwright, analyser le DOM, détecter les styles et vous ressort tout ça bien structuré avec des scores de confiance pour chaque couleur.

Ce que j'aime bien, c'est que ça exporte directement en JSON ou au format W3C Design Tokens si vous voulez l'utiliser avec Style Dictionary. Pratique pour alimenter votre propre design system ou pour documenter celui d'un client qui n'a jamais pris le temps de le faire... (il en faut)

Y'a aussi quelques options sympas comme --dark-mode pour extraire la palette sombre, --mobile pour simuler un viewport iPhone, ou --browser=firefox si le site que vous voulez analyser a des protections Cloudflare qui bloquent Chromium.

Bon, ça marche pas sur les sites qui utilisent Canvas ou WebGL pour le rendu, et faut pas s'attendre à des miracles sur les SPA qui chargent tout en async. Mais pour la majorité des sites, c'est vraiment efficace.

Le projet est open source sous licence MIT, donc vous pouvez l'auditer, le forker, le modifier comme bon vous semble. Et niveau légalité, analyser du HTML/CSS public pour de la veille concurrentielle ou de la documentation, c'est considéré comme du fair use dans la plupart des juridictions, donc vous êtes good !

Bref, si vous faites du design system, de l'audit UX ou juste de la veille sur ce que font les autres, c'est un outil à garder sous le coude.

Merci à Lorenper pour le partage !

Convert ACSM files to DRM-free EPUB files with one command on Linux

6 décembre 2025 à 16:46

The original GitHub repo does not exists anymore, but I think the Wayback Machine and some git forks out there can help you to find the code and/or knock command binary... 😇

The name comes from the D&D 5e spell for freeing locked items.

EDIT : Quelques autres ressources à ce sujet partagées sur un autre Shaarli : https://liens.vincent-bonnefille.fr/?LGo04Q#goto_FairesauterlesDRM


Permalien

Charta, des nouvelles !

29 octobre 2025 à 09:59

Charta est un outil libre (licence Apache-2.0) en ligne de commande écrit en Go pour générer des graphiques colorés dans un terminal. Plusieurs types de graphiques sont proposés (simple, min/moy/max, cumul, comparaison) ainsi que divers formats d'entrée (JSON, YAML, texte brut et l'entrée standard stdin). Charta offre des options d'entrée flexibles, une sortie colorée avec des couleurs personnalisables, des capacités de regroupement pour l'analyse de données et un support de seuils avec des niveaux d'avertissement et d'alerte. Parfait pour la visualisation de données dans les environnements terminaux et les workflows de scripts shell.

Le voici maintenant en version 0.3.1. Les nouveautés et visuels sont disponibles dans la suite de la dépêche.

Principales nouveautés

  • Refactorisation du code, simplifiant la gestion des plugins
  • Gestion des valeurs négatives pour les graphique simple et minmax
  • Ajout de titre aux graphiques (facultatif)
  • Ajout de légendes aux graphiques (facultatif)
  • Ajout du type de graphique compare permettant la comparaison de 2 valeurs. Ceci permet par exemple la génération de pyramides des âges.
  • Ajout de type de graphique cumul

Copies d'écran

Simple depuis Stdin

Simple depuis Stdin

Minmax depuis Stdin

Minmax depuis Stdin

Cumul depuis Stdin

Cumul depuis Stdin

Compare depuis un fichier texte

label=>100
12.67 2.976
new
label=95-99
8.273 2.058
19.813 4.977
27.754 7.239
37.882 10.101
48.398 14.477
new
label=90-94
61.235 20.525
76.447 27.317
91.072 34.519
105.456 44.797
124.322 55.382
new
label=85-89
139.226 66.602
164.803 83.373
175.872 95.104
192.55 108.339
195.596 116.712
new
label=80-84
210.98 131.872
213.902 139.041
222.853 153.145
226.088 160.969
232.663 171.854
new
label=75-79
239.598 182.015
231.318 179.151
221.914 177.799
249.057 204.674
269.401 224.687
new
label=70-74
279.055 234.112
286.325 242.793
378.561 327.085
400.876 350.179
409.072 361.485
new
label=65-69
413.673 364.312
422.019 374.817
408.05 364.694
418.007 374.781
413.428 371.165
new
label=60-64
421.875 381.146
424.094 382.395
427.893 390.345
430.912 395.817
433.635 400.042
new
label=55-59
442.263 410.415
444.709 416.331
444.896 421.161
445.047 422.099
460.412 438.142
new
label=50-54
464.153 444.96
459.31 442.828
457.665 441.979
447.421 432.749
450.472 434.971
new
label=45-49
452.879 441.572
457.896 448.697
466.462 457.822
469.527 459.886
460.384 448.213
new
label=40-44
435.157 426.173
413.722 404.346
404.35 390.441
413.671 404.816
414.208 399.149
new
label=65-39
424.441 405.581
448.307 427.643
442.482 421.707
438.39 416.777
414.133 391.214
new
label=30-34
417.815 396.435
420.79 398.786
422.167 397.979
413.955 392.786
409.842 390.899
new
label=25-29
405.038 385.034
397.08 384.835
385.366 377.772
376.224 373.66
357.966 356.195
new
label=20-24
358.614 357.849
367.951 371.731
374.177 381.869
370.258 384.384
384.532 398.993
new
label=15-19
390.002 410.714
412.56 433.377
409.037 431.086
403.441 423.901
402.532 422.127
new
label=10-14
403.761 422.877
405.218 424.141
415.28 433.073
408.166 426.744
410.703 430.934
new
label=5-9
408.232 427.917
412.555 429.919
403.349 418.623
396.835 417.471
389.92 407.611
new
label=0-4
387.042 399.232
372.402 387.906
363.162 378.518
355.472 370.453
347.749 364.155

Compare depuis un fichier texte

Vous souhaitez contribuer ?

Les contributions sont les bienvenues ! N'hésitez pas à forker le dépôt, proposer des améliorations, signaler des bugs ou soumettre des pull requests. Les empaqueteurs pour les différentes distributions sont également les bienvenus. La génération du paquet n'est pas compliquée puisqu'un simple go build génère un exécutable qui n'a besoin d'aucune dépendance.

Packaging status

Commentaires : voir le flux Atom ouvrir dans le navigateur

❌