Allez hop, on poursuit dans la catégorie Geek. Ajourd'hui : un soft qui m'a bien plu et qui risque de servir au moins à une personne.
Renommer ses fichiers en masse avec classe, hashage inclusS'il y a bien une chose que vous devez avoir en commun avec moi, c'est bien un volume monstrueux de fichiers vidéos correspondant à tous vos animes préférés qui s'amoncellent sur vos disques durs.
Évidemment je prends çà pour l'exemple, c'est valable pour tous les fichiers, mais on général, on déborde de photos, de films, et de musique, avant de déborder d'autres types de fichiers.
Or au bout d'un moment, il est vite agaçant d'avoir à gérer le tri de ces fichiers, et pour cela, à un moment donné, des grandes séries de renommage de fichiers s'imposent, et là c'est tout de suite le cauchemar quand on le fait à la main.
Pas de panique, je vous ai déniché l'outil idéal !
Notre ami s'appelle
ReNamer, probablement le modèle le plus abouti qu'il m'ai été donné de tester ! Alors, quelques liens pour bien commencer :
Site web : http://www.den4b.com | Auteur : Denis Kozlov
Download direct version 5.60 : .Msi (Installer) | .Zip (No install)
Documentation : Wiki | Quick Start v1.2 | Beginner's Guide v1.3 | New Manual Draft
Screenshots : Interface, Ajout d'une règle, La fenêtre de PascalScript, Exemple avec 4 règles empilées
L'utilisation est assez simple à capter, du moins pour les options les plus courantes :
- On ajoute une liste de fichiers à renommer
- On créé des règles qu'on empile les unes aux autres (ex : remplacer les "_" par " " puis supprimer les 6 premiers caractères puis ajouter "[KSW] " à la 15ème position puis enlever toutes les occurrences de "[x264 AAC 720p]" puis remplacer tous les doubles espaces par un seul, etc...)
- On vérifie dans l'aperçu que le nommage final ressemble à ce qu'on voulait
- On valide le renommage. Pif-Paf la girafe.
Bien sûr il peut faire des trucs un peu plus complexes :
- la fonction CleanUp permet par exemple de virer tout ce qui est entre "[...]" ou "(...)" ou "{...}" délimiteurs inclus, tout en choisissant si on veut remplacer ces éliminations par un autre caractère ou pas, et avec l'option bienvenue "Fix spaces" : ne laissera pas les espaces en début/fin de fichier + supprime les doubles espaces. Ainsi en un clic par exemple on se débarrasse des tags lourdingues tels que "[hosted on demonoid.con] [XMA] [uploaded par serge] [et ta mère elle pourrit mes FileNames]".
- Traduction d'un jeu de caractère à un autre, des fois que vous ayez 2.327 fichiers polonais à convertir au jeu de caractère Allemand.
- Gestion des RegExp : les expressions régulières pourront faire des schéma de logiques de suppression complexes. Exemple : je ne veux virer que les occurrences 3 à n des "vostfr" me permettant de garder les 2 premières, je veux virer tout ce qui n'est pas une lettre qui soit précédée d'un lettre majuscule etc.
- Et enfin, cerise sur le gâteau :
Editer soi-même ses propres scripts en PascalScript !
Et c'est le pourquoi du comment de mon post aujourd'hui, s'il y a bien UN truc qui m'a manqué dans TOUS les logiciels de renommage testés à ce jour, c'est la possibilité d'inclure le Hash du fichier. Idem pour tous les logiciels de hash croisés : font tout, sauf le renommage. Or notre ami ReNamer va nous permettre de faire tout çà les doigts dans le nez. Enfin !
Pourquoi est-ce important ? Et bien en bon geek averti, j'aime à pouvoir vérifier en cas de problème (copie houleuse, vieux DVD gravé y'a 10 ans, fichier stocké sur une clé USB susceptible d'avoir été vérolée etc etc) que l'intégrité de mes fichiers importants (boulot, animé de qualité, travail perso, grosses archives, etc) n'a pas été modifiée. Pour cela on se sert du hashage, consistant à grosso merdo faire la somme de tous les bits d'un fichier, le tout passé à travers une moulinette savamment appelée alogorithme, et on obtient en résultat une empreinte unique : c'est un peu la signature de ce qu'on y a mis en entrée. Si cette entrée est altérée, alors le hashage sera différent. Il y a de nombreux algorithmes de hashage disponibles : CRC-32, MD5, Tiger, HAVAL, RIPEMD, Whirlpool, SHA, etc, certains étant en plus déclinés en différentes longueur : 128, 256, 512.
Bref, je ne fais pas un cours sur le hash, pour cela il y a Wikipedia, gardez juste en tête qu'on peut à peu près tout hasher : des lignes de texte, des fichiers, un autre hashage, bref, revenons à nos moutons, à savoir mettre ceci en place dans ReNamer.
Comment faire :
1. Une fois votre ReNamer proprement installé, lancez-le et créez une nouvelle règle de renommage de la catégorie PascalScript. Un champ d'édition est prévu à droite pour votre script.
2. Entrez un des scripts donnés ci-dessous, et cliquez sur le bouton "Script" en bas pour dérouler le menu des script existants, et choisissez "Save Script". Il ne vous reste plus qu'à lui donner un nom évocateur, par exemple "Hash - MD5" si vous avez mis le script pour du hashage MD5, ca semble bien, non ?
3. Validez la règle. Y'a plus qu'à cliquer sur "Rename" pour effectuer le renommage de masse, non sans avoir au préalable vérifié que votre "Fichier.extension" a bien suivi un schéma de renommage l'amenant à "Fichier [hash].extension" dans l'aperçu. Fin de l'histoire. Rapide non ?
4. Voici les 3 algorithmes de hash supportés nativement par ReNamer (ceci est le script complet à mettre dans la fenêtre d'édition de PascalScript, pour ceux qui ont pas suivi) :
CRC-32 :
- Code:
-
begin
FileName := WideExtractBaseName(FileName) + ' [' + CalculateMetaTag(FilePath, ':Hash_CRC32:') + ']' + WideExtractFileExt(FileName);
end.
MD5 :
- Code:
-
begin
FileName := WideExtractBaseName(FileName) + ' [' + CalculateMetaTag(FilePath, ':Hash_MD5:') + ']' + WideExtractFileExt(FileName);
end.
SHA-1 :
- Code:
-
begin
FileName := WideExtractBaseName(FileName) + ' [' + CalculateMetaTag(FilePath, ':Hash_SHA1:') + ']' + WideExtractFileExt(FileName);
end.
Et voilà, vous disposez d'un logiciel ultra-complet pour vous attaquer à vos bibliothèques de fichiers multimédias avec des schémas de nommages qui ne suivent pas la même logique pour en faire un beau truc tout propre !
S'il vous faut un logiciel simple pour vérifier à tout moment le hashage d'un fichier, je vous recommande HashTab qui ajoute un onglet supplémentaire dans la fenêtre de propriétés d'un fichier, et cet onglet va vous permettre de calculer le hash du fichier selon l'algorithme de votre choix, et vous permettre de copier ce hash, ou d'en coller un dans un champs prévu à cet effet pour vérifier s'il correspond à ceux qu'il a calculé. Y'a rien de plus simple et d'ergonomique, du moins tant que l'on ne se lance pas dans la vérification de 1813 fichiers, pour çà y'a plus lourd et plus rapide. Mais c'est un autre sujet...
[ Edit : à priori, du moins du retour fait sur le fofo par Mery, l'intérêt du pourquoi du comment du hashage est mal compris, alors je mets tout çà en spoiler ici même ]
Mais à quoi ca sert-y donc de hasher ses fichiers monsieur le Poulpe ?
- Spoiler:
C'est simple : afin de pouvoir différencier 2 fichiers, ou 2 versions d'un même fichier, tu hashe ton fichier, et tu obtiens un suite de caractères : c'est l'empreinte du fichier. Elle est unique car calculée à partir de la somme de tous les bits du fichier. S'il a changé le hashage ne sera plus le même si on le recalcule mettant ainsi en évidence une modification. Cette empreinte il va falloir la conserver, pour pouvoir la comparer à un nouveau calcul d'empreinte 2 ans plus tard quand tu penses que l'intégrité de ton fichier a été altérée.
Certains programme génèrent du hash de masse ce qui est pratique pour gérer un gros volume de fichiers, mais le stockent dans un fichier externe de type .txt, .crc, ou .md5 dans lequel tu trouve la liste de tes fichiers et en face leurs hashs genre :
- One Piece 045 [KiGeN].mp4 -> 44AAC5F9D569C767DA883AB1082D8899
- One Piece 046 [KiGeN].mp4 -> 29277E07F2767B2F0548A0E56B0D11818
etc etc
Problème : si tu perds le fichier texte contenant tes hashs, retour à la case départ tu peux plus rien vérifier, il ne te reste que ton fichier vidéo. Et lorsqu'il plante, tu ne peux avoir la certitude à 100% que le fichier n'a pas été altéré puisque tu en as perdu les hashs.
Du coup ceux qui releasent des épisodes de mangas (par exemple, c'est pareil pour les grosses ISO en download pour des softs, jeux, etc) mettent directement le hashage dans le nom du fichier ce qui n'altère pas le fichier lui-même (pour cela ils préfèrent souvent le CRC-32 qui est plus vite calculé et plus court pour éviter les noms à rallonge).
Ce qui donne :
- One Piece 045 [KiGeN] [1FEE4F2D].mp4
- One Piece 046 [KiGeN] [713D01F0].mp4
etc etc
Nouveau problème : tu download depuis des teams différentes en fonction de tes critères de qualité (toutes les teams n'ont pas fait un taff impeccable depuis la saison 1 à la saison 15. d'ailleurs pour ainsi dire : aucune ne l'a fait) et du coup plein de fichiers n'ont pas d'inclus le hash dans leur nom.
Variante du problème : ton site de download préféré a réuploadé ces fichiers en provenance de diverses teams sur MU, mais après les avoir renommés "pour que ca soit plus propre" et ils ont viré les hash, ces plots.
Du coup tu te retrouve avec 387 fichiers sur 550 qui ont un nom sans hash.
Comme tu veux le remettre, tu chopes HashTab (par exemple) et là c'est la misère : tu dois aller sur chaque fichier un par un, faire clic droit, propriété, hashage, attendre la fin du calcul, copier le hash, puis refermer les propriétés et renommer le fichier en oubliant pas d'inclure des délimiteurs pour le hash : [...] ou (...)ou {...} selon tes préférences. 387 fichiers ca va être long et chiant.
Donc en général tu gaule un programme de mass hashage, et tu finis avec tout çà dans un fichier de hash externe, donc susceptible d'être perdu. Or une fois perdu ca sert à rien de recalculer tes hash 2 ans plus tard : tu as la certitude qu'il est hashé, mais pas que le fichier n,'a pas été altéré puisque tu as perdu le hashage original que tu avais fait 2 ans avant.
Donc tu finis par préférer la méthode consistant à mettre le hash directement dans le nom du fichier, comme çà tant qu'il n'a pas été renommé (pourquoi le serai-il après tout) tu as le hash pour chaque fichier.
Une fois à ce stade : le problème est d'automatiser çà proprement, et c'est le sens de mon tutoriel ici bas : ReNamer + ces 3 petis scripts permet ENFIN de passer automatiquement de :
- [KiGeN]_One_Piece_45_HD_[XMA]_[x264_AAC_720p]_[hosted_by_forchan.con].mp4
- [KiGeN]_One_Piece_45_HD_[XMA]_[x264_AAC_720p]_[hosted_by_forchan.con].mp4
à :
- One Piece 045 [KiGeN] [1FEE4F2D].mp4
- One Piece 046 [KiGeN] [713D01F0].mp4
En empilant les règles suivantes pour cet exemple :
- Enlever les 8 premiers caractères
- Remplacer tous les "_" par " "
- Enlever tous les "HD"
- Enlever tous les "[XMA]"
- Enlever tous les "[x264 AAC 720p]"
- Enlever tous les "[hosted by forchan.con]"
- Rajouter "0" à la 10ème position -> sauf pour les fichiers supérieurs à 100, ils sont déjà sur 3 digit
- Rajouter "[KiGeN] à la 14ème position
- et enfin : Ajouter le hash de type CRC-32 à la fin (le script posté insère directement " [hashage]" espace inclus).
Une fois les règles créées, y'a plus qu'à lancer et attendre gentiment que ReNamer ai fini de ramer (c normal il n'utilise pas un autre thread pour le hashage donc plus les fichiers sont gros et nombreux, plus la fenêtre de ReNamer ramera longtemps)
Quand 2 ans plus tard tu rencontre un fichier dont l'intégrité peut être remise en doute, pas de souci, tu as depuis le départ son hash initial dans le nom lui-même, y'a plus qu'à tester, et pour le coup HashTab suffit tant qu'on veut pas vérifier tous les fichiers en masse mais seulement quelques-uns.
Ou l'art de ne plus avoir envie de se faire chier.
J'espère avoir été plus clair ^^