Ant Renamer Qt - pour renommer ses photos et les fichiers associés

Démarré par morfredus, Octobre 29, 2026, 02:11:02

« précédent - suivant »

morfredus

Salut.
C'est fait et testé, présent dans la beta.4.

L'historique de renommage est persistant d'une session a l'autre, daté, et permet d'annuler un job de renommage, seul impératif, ne pas avoir déplacer les fichiers physiquement sur le disque, ou ne pas avoir fait un renommage a la main (le programme le signal et stop l'annulation de renommage).
Je fige le code de cette beta.4, elle vas passer en RC.1 pour régler les derniers bugs et ce sera la version 3.1.0 définitive unie fois que le paquet pour le 3.0.0 sera validé par Microsoft dans Winget.

Merci encore pour le temps que tu me consacre, ca permet de faire avancer le projet.
De passage...

restoc

Bien. La contrainte de rester sur le même disque pendant l'opération de retour est acceptable. 

Et renommer dans le Cloud ?

 


egtegt²

Il faut juste être sûr que le renommage est bien bijectif, si tu as renommé 120 photos en "photo.jpg", tu risques d'avoir quelques désillusions  ;)

morfredus

Citation de: restoc le Novembre 04, 2026, 07:49:16Bien. La contrainte de rester sur le même disque pendant l'opération de retour est acceptable. 

Et renommer dans le Cloud ?


Salut.

Non, le seul appel sur le réseau, c'est pour vérifier s'il y a une nouvelle version : un appel par jour vers GitHub, et seulement si tu l'as voulu (désactivé par défaut). Rien de tes données ne voyage en ligne.

Pour le Cloud : le logiciel ne se connecte à aucun service (OneDrive, Dropbox, Google Drive...). Il ne travaille que sur des fichiers présents sur ton disque. Si ton dossier Cloud est synchronisé localement, tu peux donc le renommer comme n'importe quel autre dossier, et c'est ton client de synchronisation qui répercute ensuite les changements en ligne.

Un point de détail sur le retour arrière : ce n'est pas un problème de conception, c'est une limite logique. On ne peut pas revenir en arrière si le fichier n'est plus là où il devrait être. Avec un dossier Cloud, le client de synchronisation peut déplacer, remplacer ou mettre en « en ligne uniquement » un fichier entre le renommage et le retour. Le logiciel ne retrouve alors plus le fichier à l'endroit attendu et ne peut pas l'annuler. Je te conseille donc de laisser la synchronisation se terminer avant de lancer un retour arrière.
De passage...

morfredus

Citation de: egtegt² le Novembre 04, 2026, 09:18:15Il faut juste être sûr que le renommage est bien bijectif, si tu as renommé 120 photos en "photo.jpg", tu risques d'avoir quelques désillusions  ;)

Salut.

Tu as raison et c'est prévu, un renommage doit rester bijectif : deux fichiers ne peuvent pas porter le même nom dans un même dossier.

Le logiciel ne remplace jamais un fichier existant. Si le nouveau nom est déjà pris, l'opération échoue pour ce fichier et le journal affiche « Un fichier ou un dossier portant ce nom existe déjà ». Avec tes 120 photos renommées en « photo.jpg », la première passe et les 119 autres sont refusées. Tu as donc un journal plein d'erreurs, mais aucune photo n'est écrasée.

Pour éviter ça, ajoute une action de numérotation, ou la date et l'heure, pour rendre chaque nom unique.

De passage...

egtegt²

Le souci c'est que parfois c'est plus compliqué, si par exemple j'ajoute la date et l'heure et que je renomme 1000 photos, ça risque d'être délicat si je me rends compte après coup qu'il y a eu des soucis avec les images avec la même date et heure (en cas de rafale ou de déclenchements rapprochés). Capture One a résolu le problème en faisant le renommage quand même mais en suffisant avec un _1, _2 ... etc.
Mais le programme a l'air bien foutu, c'était juste une remarque en passant :)

morfredus

Oui pas de soucis, toutes les remarques sont bonne a prendre pour rendre le logiciel plus robuste.
Cependant, j'ai déjà envisagé ce problème, il est en cours de résolution : un peu comme Capture One, en ajoutant un suffixe. J'avais effectivement noté _1, _2, mais ce n'est pas encore fixé.

En attendant, le logiciel ne remplace jamais un fichier existant. Si le nom est déjà pris, ce fichier est refusé et signalé dans le journal, et les autres sont renommés normalement. Tu peux aussi ajouter une numérotation après la date et l'heure pour rendre chaque nom unique.

Content que le programme te plaise :)


De passage...

egtegt²

Citation de: morfredus le Novembre 04, 2026, 14:35:17Oui pas de soucis, toutes les remarques sont bonne a prendre pour rendre le logiciel plus robuste.
Cependant, j'ai déjà envisagé ce problème, il est en cours de résolution : un peu comme Capture One, en ajoutant un suffixe. J'avais effectivement noté _1, _2, mais ce n'est pas encore fixé.

En attendant, le logiciel ne remplace jamais un fichier existant. Si le nom est déjà pris, ce fichier est refusé et signalé dans le journal, et les autres sont renommés normalement. Tu peux aussi ajouter une numérotation après la date et l'heure pour rendre chaque nom unique.

Content que le programme te plaise :)



J'avais un prof d'informatique pendant mes études qui quand un programme écrivait "Entrez un chiffre entre 0 et 9" tapait "a" :) Depuis dés qu'on me montre un programme j'ai le reflexe de chercher la faille, ce qui ne signifie pas que s'il y a une faille je considère que le programme est mauvais.

morfredus

Je comprends ce que tu fais, je fonctionne un peu de la même manière.

J'essaie toujours d'anticiper les réactions et les comportements d'un utilisateur, y compris ceux auxquels on ne pense pas forcément au premier abord. Parce qu'un utilisateur ne lit pas toujours la documentation, et qu'il ne fait pas nécessairement ce qu'on avait imaginé qu'il ferait. 😉

J'essaie donc de prévoir les erreurs, les mauvaises manipulations et les utilisations un peu inattendues. Mais il est évidemment impossible de tout anticiper ou de tester absolument tous les scénarios.

Et finalement, c'est aussi pour ça que les retours des utilisateurs sont intéressants : ils nous font parfois découvrir des situations auxquelles on n'avait tout simplement pas pensé.
De passage...

ChatOuille

J'ai essayé la dernière version et j'ai encore quelques remarques. Le undo/redoe fonctionne bien, quoique je n'aie pas approfondi.
Je compare avec le programme que j'avais développé. Je travaille toujours au niveau d'un seul dossier. C'est plus sûr. Si un problème apparaît, on sait où le localiser. Ici on a même demandé de renommer dans le cloud, mais je n'ai pas besoin de plus.
Le plus souvent j'ai besoin de remplacer les lettres du nom, mais parfois de modifier le chiffre. En parlant de chiffres, j'ai une option que permet d'incrémenter le chiffre existant, cela même de soustraire. Sur ton logiciel cette option n'existe pas, mais j'ai essayé de la simuler. Mais la gestion d'erreurs est insuffisante (voir image). Si imaginer ce que l'opérateur peut faire par erreur, est important, pour moi c'est encore plus important, et difficile d'imaginer ce que l'ordinateur peut faire sans que l'opérateur aie commis une faute "grave". Ici, de toute évidence ne marche pas.
J'avais résolu ce problème en faisant le renommage en deux étapes. Dans un premier temps les fichiers recevaient des noms "cryptés", de la sorte que ce n'était presque pas possible que deux fichiers aient le même nom. Dans la deuxième partie, les fichiers recevaient le nom souhaité.


morfredus

Merci pour ce retour détaillé, et pour le test de l'undo/redo.

Ce que tu vois sur ta capture n'est pas un oubli de gestion d'erreur, c'est un choix volontaire. Ant Renamer Qt renomme les fichiers un par un, dans l'ordre de la liste, et ne remplace jamais un fichier qui existe déjà. Quand un renommage provoque une erreur, le fichier garde son nom d'origine, pour ne jamais en perdre un. Un décalage de +1 sur 1, 2, 3 produit donc des erreurs : 1 ne peut pas devenir 2 tant que 2 existe encore. Le résultat est sûr, mais il n'est pas ce que tu voulais.

En attendant, tu peux obtenir le même effet que ta méthode en deux étapes avec deux jobs enchaînés :

un premier job qui donne à tous les fichiers un nom temporaire unique ;
un second job qui applique la numérotation voulue, avec le point de départ et le pas de ton choix (le pas peut être négatif).
La limite est que cela renumérote au lieu d'ajouter +1 au nombre déjà présent dans le nom, car le nombre d'origine est perdu après la première étape.

Une vraie option « incrémenter/décrémenter le nombre existant », avec un renommage en deux passes en interne, n'existe pas aujourd'hui. Je vais réfléchir à ta proposition. Le code de la 3.1.0 est figé, donc ce ne serait éventuellement que pour la 3.2.0, sans engagement pour l'instant.

Pour le travail dossier par dossier, tu peux déjà charger un seul dossier à la fois. Merci d'avoir pensé aux erreurs "qui ne devraient pas arriver", c'est le plus précieux dans un retour.

De passage...

ChatOuille

Tu ne dois pas m'expliquer pourquoi l'erreur se produit, car je l'ai provoquée volontairement.  >:D
J'avais réfléchi à ce problème et j'avais résolu cela en créant 2 étapes. Je ne me souvent plus exactement comment j'avais renommé au premier passage, mais c'était bien avec des caractères non-alphanumériques. Comme ça j'étais plus ou moins sûr qu'aucun fichier portait ce nom d'origine.
Et ça marche. La photo jointe en montre la preuve. Ton logiciel ne le permet pas, bien qu'il contient un tas de fonctions dont je ne dispose pas.
Je n'ai jamais dit que tu devrais te limiter à un seul dossier. Certainement pas. Je dis seulement que pour mes besoins ce n'est pas nécessaire. Celui qui veut renommer le contenu de plusieurs dossiers en même temps il peut le faire. Mais il doit faire attention.
Le 99% de mes renommages se passent dans un dossier photo qui contient les fichiers issus de la carte-mémoire. J'utilise seulement une fonction de mon logiciel car je conserve les chiffres du boîtier.
Il arrive très rarement de télécharger une collection de documents et parfois on veut adapter les noms. Il arrive que d'autres fonctions soient nécessaires pour cela.
Je dispose aussi d'une numérotation aléatoire, mais alors l'ordre numérique est perdu. L)idéal serait de pouvoir changer les chiffres en respectant l'ordre d'origine, mais je ne sais pas si le jeu en vaut la chandelle.
Je ne te demande rien car mon logiciel me suffit, mais j'essaye de te donner des idées, si tu en as envie.


ChatOuille

Et voici le dossier précédent (après renommage). Je fais reculer de 3 chiffres avec 2 digits (indiqués par ##), ce qui convertit le 3 en 00.

morfredus

Ce renommage est très spécifique, mais c'est une idée que je prends, je ne sais pas si je l'implémenterais, je ne sais pas trop comment le coder tout en conservant un historique de renommage cohérent pour une ou plusieurs annulation, mais j'ai noté cette idée dans la todo.
Provoquer une erreur sciemment est une bonne chose, quand tu code malheureusement tu ne penses pas a tout, d'où l'intérêt d'avoir des testeurs, qui plus est des "tortureurs", pour mettre a mal le logiciel, merci a toi
De passage...

ChatOuille

Je t'ai montré une erreur possible car je m'y attendais. Et je t'ai expliqué comment je suis arrivé à prévenir cette erreur dans mon logiciel. Si tu as beaucoup de fichiers à renommer et certains sont renommés et d'autres pas, cela devient un charabia.
Pour le renommage de mes photos, j'utilise toujours la même fonction, mais lorsque tu télécharges une collection depuis le net, tu peux t'attendre à n'importe quoi concernant les noms. C'est pour cette raison que j'ai prévu des fonctions plus spécifiques.

Il m'arrive parfois que je ne veuille pas changer la numérotation, mais que le nombre de chiffres soit identique pour tous les fichiers. Si je veux deux chiffres, un zéro sera ajouté aux unités. Voici un exemple. Je demande deux digits et c'est renommé. Si je veux faire le contraire c'est aussi possible. Je demande un seul digit et les unités son corrigées, bien que les dizaines restent tel quel. Evidemment tu peux jouer avec le nombre de chiffres que tu veux.

morfredus

    Salut.

    C'est une fonction très spécifique, mais réalisable avec Ant Renamer Qt, pas si simplement par contre : l'utilisation des expressions régulières permet de le faire.

Passer de 1 à 2 chiffres (0.jpg devient 00.jpg, 3.jpg devient 03.jpg, 12.jpg ne bouge pas) :
Dans Ant Renamer Qt, action Expressions régulières :
  • Champ Expression :
    (?<!\d)(\d)(?!\d)
  • Champ Nouveau nom :
    0$1
Faire l'inverse, revenir à 1 chiffre (00.jpg devient 0.jpg, 01.jpg devient 1.jpg, 10.jpg reste 10.jpg) :
  • Champ Expression :
    (?<!\d)0+(?=\d)
  • Champ Nouveau nom : laissé vide
Pour 3 chiffres (ou plus), il faut enchaîner plusieurs actions dans le même lot :
[list=1]
  • Expression
    (?<!\d)(\d{2})(?!\d)
    , nouveau nom
    0$1
    (les nombres à 2 chiffres passent à 3)
  • Expression
    (?<!\d)(\d)(?!\d)
    , nouveau nom
    00$1
    (les nombres à 1 chiffre passent à 3)
À savoir :
  • L'expression s'applique à tout le nom, extension comprise, et à tous les nombres qu'il contient (une année ou un « 4K » dans le nom seront aussi touchés).
  • Pour limiter l'effet, on peut préciser le texte autour, par exemple
    (photo )(\d)(?!\d)
    avec le nouveau nom
    ${1}0$2
    .
  • La prévisualisation montre le résultat avant de renommer, donc on peut vérifier avant d'appliquer.

Ce n'est donc pas un simple réglage « nombre de chiffres » comme dans ton logiciel, mais ça fait le travail, et ça reste réversible avec l'historique d'annulation.

Capture d'écran du résultat ci-dessous.
De passage...

ChatOuille

Merci, mais ne te casse pas la tête. Repose-toi un peu. Bon week-end.  :)

morfredus

Citation de: ChatOuille le Hier à 18:57:01Merci, mais ne te casse pas la tête. Repose-toi un peu. Bon week-end.  :)
Merci toi aussi ;)
De passage...