[Résolu] Insérer lettres et nombres aléatoires dans des noms de fichier, avec AppleScript |
Bienvenue invité ( Connexion | Inscription )
[Résolu] Insérer lettres et nombres aléatoires dans des noms de fichier, avec AppleScript |
21 Aug 2006, 23:29
Message
#1
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 291 Inscrit : 25 Dec 2002 Lieu : Paris Membre no 5 299 |
Bonjour,
Je suis en train de préparer mes photos afin de les mettre en ligne avec PhpWebGallery. J'ai fait un fichier automator qui permet de copier les photos dans un dossier en les redimensionnant et en créeant des vignettes. Jusqu'ici tout va bien. J'aurai voulu ajouter avant l'extension dans le nom des fichiers une série (configurable) de chiffres et de lettres aléatoires. Exemple : test_100.jpg -> test_100_apr45.jpg (l'idéal serait de mixer chiffres, lettres et casse pour obtenir par exemple test_100_Ap45R.jpg mais ce n'est pas le plus important). J'ai trouvé ça sur internet : -> AppleScript to generate a random number & prefix to filename?? -> Renaming files in a folder by adding a suffix before the extension -> Random in Applescript J'ai fait un mix des trois : CODE on run tell application "Finder" copy selection to selectedFiles set shuffle_pool to files of selectedFiles set shuffle_count to count shuffle_pool set duplicates to {} repeat with aFile in selectedFiles repeat set an_item to random number (1000) from 1 to shuffle_count if an_item is not in duplicates then exit repeat end repeat tell aFile set theOriginalName to do shell script "basename " & name of aFile & " ." & name extension set name of aFile to theOriginalName & an_item & "." & name extension end tell end repeat end tell end run J'y suis presque mais je n'arrive pas à intégrer de lettres aléatoires. Lorsque je tente de mettre le code provenant du dernier site, je n'obtiens plus de chiffres aléatoires. C'est l'un ou l'autre C'est sûrement tout bête mais je n'y connais pas grand chose en AppleScript et malgré quelques bidouillages je n'arrive pas à obtenir ce que je souhaite. De plus je pars sur des scripts que ne sont peut-être pas écrit dans ce but à la base. Si quelqu'un peut m'aider, je suis preneur Merci Edit : résolu cf. le code Applescript ici, ou l'utilitaire plus élaboré "ZarbiRename" développé pour l'occasion en PostCardWare par AlbertLevert à cette adresse. Ce message a été modifié par Pompon - 8 Mar 2007, 23:55. -------------------- iMac Intel Core i5 27 pouces 3,2Ghz 2013, 8Go de Ram avec 10.15.7.
|
|
|
21 Aug 2006, 23:39
Message
#2
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 2 266 Inscrit : 12 Mar 2006 Lieu : City of Sails Membre no 57 388 |
salut,
tu pourrais utiliser le code ascii pour les lettres... -------------------- |.... je suis fiu ....|
-------------------- |
|
|
21 Aug 2006, 23:52
Message
#3
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 291 Inscrit : 25 Dec 2002 Lieu : Paris Membre no 5 299 |
Ok pour le code ASCII p1ngu01...
On ne peut pas l'utiliser également pour les chiffres ? On simplifierait en demandant au script de piocher au hasard pour 4 caractères dans le code ASCII 48->57, 65->90, 97->122. Sinon j'ai aussi essayé de me baser sur générateurs de mot de passe en applescript, mais cela ne donne rien (entre mes mains !). Le script que j'ai actuellement comporte des lignes afin de ne pas avoir deux fois les mêmes chiffres mais je n'en ai pas besoin. Il peut sûrement être simplifié et être plus rapide (pour son intégration dans Automator). J'y retourne -------------------- iMac Intel Core i5 27 pouces 3,2Ghz 2013, 8Go de Ram avec 10.15.7.
|
|
|
22 Aug 2006, 00:15
Message
#4
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 2 266 Inscrit : 12 Mar 2006 Lieu : City of Sails Membre no 57 388 |
CITATION(Pompon @ 22 Aug 2006, 00:52) [snapback]1840164[/snapback] On ne peut pas l'utiliser également pour les chiffres ? On simplifierait en demandant au script de piocher au hasard pour 4 caractères dans le code ASCII 48->57, 65->90, 97->122. euh ouais, je pense... -------------------- |.... je suis fiu ....|
-------------------- |
|
|
22 Aug 2006, 03:21
Message
#5
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 295 Inscrit : 10 Dec 2003 Membre no 12 371 |
Et comme ceci ?
CODE property lesChiffre : {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"} property LesMinusCule : {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"} property LesMaj : {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"} on run tell application "Finder" copy selection to selectedFiles set shuffle_pool to files of selectedFiles set shuffle_count to count shuffle_pool set duplicates to {} repeat with aFile in selectedFiles repeat with i from 1 to 2 set an_item to an_item & some item of lesChiffre if i = 1 then set an_item to an_item & some item of LesMinusCule else set an_item to an_item & some item of LesMaj end if end repeat set leNomLong to (count of character of (aFile as string)) log leNomLong set Nombase to text 1 thru (leNomLong - 4) of aFile set LExtension to text from (leNomLong - 3) to leNomLong of aFile set NomFinal to Nombase & "_" & an_item & LExtension set theOriginalName to do shell script "mv " & aFile & " " & NomFinal end repeat end tell end run -------------------- G4 2x1250, 1024, SoundStick, iSight, 22" LaCie, 20" Sony
|
|
|
22 Aug 2006, 04:36
Message
#6
|
|
Macbidouilleur d'Or ! Groupe : Modérateurs Messages : 19 617 Inscrit : 22 Jul 2004 Lieu : Louvain-la-Neuve (Gaule Gelbique) Membre no 21 291 |
[H.S.] Hormis la beauté du geste, je peux te demander à quoi tout ça sert ?
-------------------- ¶ MacBook Pro 14’’ 2021, M1 Pro, 16 Go/1 To – macOS 12.6 “Monterey” ¶ MacBook Pro 15’’ mi-2010 Core i5 2,53 GHz, 8 Go/SSD Samsung 860EVO 1 To – Mac OSX 10.6.8 ¶ Power Macintosh G3 beige de bureau, rev.1 @ 233MHz, 288 Mo/4Go – MacOS 9.1 + carte PCI IDE/ATA Tempo 66 Acard 6260 avec HD interne Maxtor 80 Go + graveur interne CDRW/DVD LG GCC-4520B + tablette A4 Wacom UD-0608-A + LaCie ElectronBlueIV 19" + HP ScanJet 6100C ¶ B-Box 3 + HP LaserJet 4000 N
¶ La recherche dans MacBidouille vous paraît obscure ? J'ai rédigé une proposition de FAQ. Le moteur logiciel a un peu changé depuis mais ça peut aider quand même. … Les corsaires mettent en berne… |
|
|
22 Aug 2006, 11:15
Message
#7
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 291 Inscrit : 25 Dec 2002 Lieu : Paris Membre no 5 299 |
Vous êtes vraiment très efficaces messieurs les nocturnes ! Je ne pensais pas en me réveillant trouver le script posté à 4h21.
Merci pour le code AlbertLevert, je vois que tu as même penser à insérer un underscore dans le nom de fichier. Par contre lorsque j'essaye d'executer le script il me dit que la variable "an_item" n'est pas définie?! J'ai essayé de bidouiller en vain. Il s'agit du deuxième "an_item" : CODE set an_item to an_item & some item of lesChiffre baron pour l'utilité du script voici le lien d'un post sur le forum de PhpWebGallery : Pb de securité avec PhpWebGallery. Disons que c'est une "sécurité" en plus du index.htm pour éviter à des visiteurs trop curieux de voir des photos non autorisées. Merci de votre aide ! -------------------- iMac Intel Core i5 27 pouces 3,2Ghz 2013, 8Go de Ram avec 10.15.7.
|
|
|
22 Aug 2006, 12:33
Message
#8
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 295 Inscrit : 10 Dec 2003 Membre no 12 371 |
Voila une version plus fonctionnelle ...
CITATION property lesChiffre : {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"} property LesMinusCule : {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"} property LesMaj : {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"} property LongExt : 4 on run tell application "Finder" copy selection to selectedFiles end tell set UnTruc to "" repeat with aFile in selectedFiles repeat with i from 1 to 2 set UnTruc to UnTruc & some item of lesChiffre if i = 1 then set UnTruc to UnTruc & some item of LesMinusCule else set UnTruc to UnTruc & some item of LesMaj end if end repeat set aFile to aFile as string set aFile to POSIX path of aFile as string set leNomLong to (count of character of (aFile as string)) set Nombase to text 1 thru (leNomLong - LongExt) of aFile set LExtension to text from (leNomLong - (LongExt - 1)) to leNomLong of aFile set NomFinal to Nombase & "_" & UnTruc & LExtension set theOriginalName to do shell script "mv " & aFile & " " & NomFinal end repeat end run Ce message a été modifié par AlbertLevert - 22 Aug 2006, 12:34. -------------------- G4 2x1250, 1024, SoundStick, iSight, 22" LaCie, 20" Sony
|
|
|
22 Aug 2006, 12:45
Message
#9
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 291 Inscrit : 25 Dec 2002 Lieu : Paris Membre no 5 299 |
Yes ça marche... mais si je sélectionne plusieurs fichiers ton script donne ça :
test_001_a1Ze.jpg test_002_a1ZeR24E.jpg test_003_a1ZeR24E86oi.jpg... Comment faire pour générer 4 (par exemple) lettres et nombres aléatoires pour chaque fichiers ? Désolé d'insister. -------------------- iMac Intel Core i5 27 pouces 3,2Ghz 2013, 8Go de Ram avec 10.15.7.
|
|
|
22 Aug 2006, 13:18
Message
#10
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 295 Inscrit : 10 Dec 2003 Membre no 12 371 |
Oooops,
il faut mettre la ligne CODE set UnTruc to "" Une ligne en dessous. soit a l'intérieur de la boucle, et non pas avant ...ce ki donne donc ceci : CODE property lesChiffre : {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}
property LesMinusCule : {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"} property LesMaj : {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"} property LongExt : 4 on run tell application "Finder" copy selection to selectedFiles end tell repeat with aFile in selectedFiles set UnTruc to "" repeat with i from 1 to 2 set UnTruc to UnTruc & some item of lesChiffre if i = 1 then set UnTruc to UnTruc & some item of LesMinusCule else set UnTruc to UnTruc & some item of LesMaj end if end repeat set aFile to aFile as string set aFile to POSIX path of aFile as string set leNomLong to (count of character of (aFile as string)) set Nombase to text 1 thru (leNomLong - LongExt) of aFile set LExtension to text from (leNomLong - (LongExt - 1)) to leNomLong of aFile set NomFinal to Nombase & "_" & UnTruc & LExtension set theOriginalName to do shell script "mv " & aFile & " " & NomFinal end repeat end run -------------------- G4 2x1250, 1024, SoundStick, iSight, 22" LaCie, 20" Sony
|
|
|
22 Aug 2006, 14:13
Message
#11
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 291 Inscrit : 25 Dec 2002 Lieu : Paris Membre no 5 299 |
Parfait merci beaucoup AlbertLevert, c'est parfait !
Il ne me reste plus qu'à l'intégrer dans automator. @+ -------------------- iMac Intel Core i5 27 pouces 3,2Ghz 2013, 8Go de Ram avec 10.15.7.
|
|
|
22 Aug 2006, 17:51
Message
#12
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 291 Inscrit : 25 Dec 2002 Lieu : Paris Membre no 5 299 |
Bon je crois que je vais avoir de nouveau besoin d'aide... Je n'ai pas fait un nouveau post car ma question reste dans la continuité de celui-ci.
En fait je me suis rendu compte que le script de AlbertLevert ne fonctionne qu'avec les élements sélectionnés dans une fenêtre (ce que j'avais demandé à la base). Cependant je souhaiterai sélectionner automatiquement un dossier sur le bureau (appelons le "test") et appliquer le script à l'ensemble des élements de ce dossier afin de pouvoir l'intégrer directement dans Automator. J'ai regardé dans Automator et dans l'éditeur de script mais je n'arrive pas à "programmer" une sélection. L'idéal serait de pouvoir donner un chemin relatif (sans le nom de l'utilisateur) afin qu'il fonctionne sur toutes les sessions. J'ai regardé sur le forum, j'ai bien trouvé la commande "logname" dans ce post mais entre mes mains cela ne donne rien. Si quelqu'un a une idée... Merci Ce message a été modifié par Pompon - 22 Aug 2006, 17:52. -------------------- iMac Intel Core i5 27 pouces 3,2Ghz 2013, 8Go de Ram avec 10.15.7.
|
|
|
22 Aug 2006, 19:55
Message
#13
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 295 Inscrit : 10 Dec 2003 Membre no 12 371 |
Encore une ? (de variante)
il te reste juste a changer le nom du dossier "Dossiertest" CODE property lesChiffre : {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}
property LesMinusCule : {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"} property LesMaj : {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"} property LongExt : 4 property MonDossierAmoi : "Dossiertest" on run set leBureau to (path to desktop folder) as string set MonDossier to leBureau & MonDossierAmoi try alias MonDossier on error beep display dialog "Le dossier n'existe pas !" buttons {"ok"} giving up after 5 return end try tell application "Finder" to set selectedFiles to (select every file of folder MonDossier) tell application "Finder" to set leNbFichier to (count of every file of folder MonDossier) if leNbFichier = 0 then beep display dialog "Aucun fichier trouvé !" buttons {"ok"} giving up after 5 return end if repeat with XX from 1 to leNbFichier set UnTruc to "" if leNbFichier = 1 then set aFile to selectedFiles as string else set aFile to item XX of selectedFiles set aFile to aFile as string end if repeat with i from 1 to 2 set UnTruc to UnTruc & some item of lesChiffre if i = 1 then set UnTruc to UnTruc & some item of LesMinusCule else set UnTruc to UnTruc & some item of LesMaj end if end repeat set aFile to POSIX path of aFile as string set leNomLong to (count of character of (aFile as string)) set Nombase to text 1 thru (leNomLong - LongExt) of aFile set LExtension to text from (leNomLong - (LongExt - 1)) to leNomLong of aFile set NomFinal to Nombase & "_" & UnTruc & LExtension set MonScript to "mv " & aFile & " " & NomFinal set theOriginalName to do shell script MonScript end repeat end run Ce message a été modifié par AlbertLevert - 22 Aug 2006, 19:55. -------------------- G4 2x1250, 1024, SoundStick, iSight, 22" LaCie, 20" Sony
|
|
|
22 Aug 2006, 22:30
Message
#14
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 2 266 Inscrit : 12 Mar 2006 Lieu : City of Sails Membre no 57 388 |
salut,
ou encore en faisant (en une ligne) : set the_path to "Macintosh HD:Users:" & (system attribute "USER") & ":Desktop:test:" http://forum.macbidouille.com/index.php?sh...ystem+attribute -------------------- |.... je suis fiu ....|
-------------------- |
|
|
22 Aug 2006, 22:43
Message
#15
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 291 Inscrit : 25 Dec 2002 Lieu : Paris Membre no 5 299 |
Encore merci AlbertLevert, ton script fonctionne !
... Mais j'ai encore une dernière requête. Petit récapitulatif : 1- Automator copie les photos que je sélectionne dans un nouveau dossier "test" sur le bureau. 2- Il redimensionne les photos en 800x600. 3- Puis il recopie ces photos dans un dossier "thumbnail" dans le dossier "test". 4- Il les redimensionne en 150x112. 5- Puis Automator fait une page index.htm dans les deux dossiers. J'ai essayé d'insérer le script dans le workflow d'automator avant l'étape 1 ou après l'étape 2. Si je le mets, automator exécute toutes les actions jusqu'au script (compris) puis s'arrête, car il n'a plus de sélection. Tu as résolu le problème avec le dernier script. Le hic ce sont les miniatures... Donc est-il possible de sélectionner les photos dans le dossier test OU de recopier les lettres/chiffres aléatoires générés dans le nom de fichiers des images dans le nom de fichiers des miniatures qui sont dans le dossier thumbnail (les vignettes ont le même nom de fichier que les images) ? Je sais j'insiste beaucoup. Les scripts marchent très bien, mais je ne peux pas les intégrer dans automator (je cherche à faire le plus simple possible). Voilà... Merci Ce message a été modifié par Pompon - 22 Aug 2006, 22:44. -------------------- iMac Intel Core i5 27 pouces 3,2Ghz 2013, 8Go de Ram avec 10.15.7.
|
|
|
23 Aug 2006, 02:23
Message
#16
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 295 Inscrit : 10 Dec 2003 Membre no 12 371 |
CITATION(Pompon @ 22 Aug 2006, 23:43) [snapback]1841542[/snapback] Petit récapitulatif : 1- Automator copie les photos que je sélectionne dans un nouveau dossier "test" sur le bureau. 2- Il redimensionne les photos en 800x600. 3- Puis il recopie ces photos dans un dossier "thumbnail" dans le dossier "test". 4- Il les redimensionne en 150x112. 5- Puis Automator fait une page index.htm dans les deux dossiers. ... ça irait plus vite si tu disait de suite ce que tu cherche a faire .... Au fait, pourquoi Automator ? 1 - tu choisis un dossier avec des images (jpg) 2 - tu donne le nom du dossier à créer sur le bureau 3 - le script fait le reste il te reste plus qu'a faire la page html à la suite ! Voila le script . CODE property lesChiffre : {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}
property LesMinusCule : {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"} property LesMaj : {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"} property LongExt : 4 property LargeurMaxi_1 : 800 property LargeurMaxi_2 : 150 property DossierThumbnails : "thumbnail" on run set leDossierAconvertir to choose folder set leBureau to (path to desktop folder) as string display dialog "Nom du nouveau dossier" default answer "test" buttons {"Ok", "Annuler"} default button 1 copy the result as list to {text_returned, button_pressed} if button_pressed = "Annuler" then return end if set DossierDest to text_returned log DossierDest -- LA ligne a modifier pour le dossier final ! -- par exemple : -- set MonDossierArrivee to "Macintosh HD:USers:MonNom:Documents:ici:" set MonDossierArrivee to leBureau set MonDossierArrivee2 to MonDossierArrivee & DossierDest tell application "Finder" try make new folder at folder MonDossierArrivee with properties {name:DossierDest} on error log "Le dossier " & DossierDest & " existe déja !" return end try try make new folder at folder MonDossierArrivee2 with properties {name:DossierThumbnails} on error --log "Le dossier DossierThumbnails existe déja !" end try end tell tell application "Finder" to set selectedFiles to (select every file of folder leDossierAconvertir) tell application "Finder" to set leNbFichier to (count of every file of folder leDossierAconvertir) if leNbFichier = 0 then beep display dialog "Aucun fichier trouvé !" buttons {"ok"} giving up after 5 return end if repeat with XX from 1 to leNbFichier --Generateur de Nom zarbi :D set UnTruc to "" if leNbFichier = 1 then set aFile to selectedFiles as string else set aFile to item XX of selectedFiles set aFile to aFile as string end if tell application "Finder" to set leNom to name of (alias aFile) repeat with i from 1 to 2 set UnTruc to UnTruc & some item of lesChiffre if i = 1 then set UnTruc to UnTruc & some item of LesMinusCule else set UnTruc to UnTruc & some item of LesMaj end if end repeat set leNomLong to (count of character of (leNom as string)) set Nombase to text 1 thru (leNomLong - LongExt) of leNom set LExtension to text from (leNomLong - (LongExt - 1)) to leNomLong of leNom set NomFinal to Nombase & "_" & UnTruc & LExtension set NouvelleImage_1 to MonDossierArrivee2 & ":" & NomFinal set NouvelleImage_2 to MonDossierArrivee2 & ":" & DossierThumbnails & ":" & NomFinal -- creation des images tell application "Image Events" launch set Image1 to open aFile set Image2 to Image1 set Letype to file type of Image1 copy dimensions of Image1 to {LaLargeur, LaHauteur} --mise a l'echelle des images et sauvegarde des nouveaux fichiers scale Image1 by factor (LargeurMaxi_1 / LaLargeur) save Image1 in NouvelleImage_1 as Letype scale Image2 by factor (LargeurMaxi_2 / LaLargeur) save Image2 in NouvelleImage_2 as Letype end tell end repeat end run Ce message a été modifié par AlbertLevert - 23 Aug 2006, 02:38. -------------------- G4 2x1250, 1024, SoundStick, iSight, 22" LaCie, 20" Sony
|
|
|
23 Aug 2006, 20:31
Message
#17
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 291 Inscrit : 25 Dec 2002 Lieu : Paris Membre no 5 299 |
Salut AlbertLevert le nocturne,
Pourquoi Automator ? Plus simple à utiliser pour un novice comme moi. Et puis je ne pensais pas avec un script pouvoir en faire autant. J'avais réussi toutes les étapes et je pensais juste générer un script pour les lettres et les nombres aléatoires puis l'insérer dans Automator. Finalement tu avais raison, j'aurai du te donner toutes les infos à la base. Mais les problèmes sont arrivés au fur et à mesure. Désolé de t'avoir redemandé quatre fois de modifier ton script. J'espère qu'il pourra servir à d'autres personnes ! En tout cas merci beaucoup de ton aide, tu es très efficace !!! @+ -------------------- iMac Intel Core i5 27 pouces 3,2Ghz 2013, 8Go de Ram avec 10.15.7.
|
|
|
24 Aug 2006, 02:12
Message
#18
|
|
Macbidouilleur d'Or ! Groupe : Modérateurs Messages : 3 818 Inscrit : 15 Mar 2004 Lieu : Région Parisienne Membre no 16 307 |
sinon, tu peux aussi essayer ce script shell :
CODE #!/bin/sh repTest=~/Desktop/test mkdir -p $repTest mkdir -p $repTest/thumbnail mkdir -p $repTest/.ref cd $repTest/.ref for img in "$@" do nom=$(mktemp "$(echo ${img%.*} | sed 's:.*/::')_XXXXXXX").${img##*.} sips -z 600 800 --out "../$nom" "$img" sips -z 112 150 --out "../thumbnail/$nom" "$img" done Il prend en entrée une liste de fichiers et effectue les redimensionnements avec sips présent dans Tiger (tu peux aussi utiliser convert qui vient avec ImageMagick, à compiler/installer soi-même) Le dossier ~/Desktop/test est utilisé s'il existe déjà, sinon créé On utilise mktemp pour la génération du nom, et pour éviter de tomber sur un doublon (ce que sait faire mktemp) on garde la trace dans ~/Desktop/test/.ref (donc ne pas supprimer ce dossier invisible) Ça devrait passer avec l'action Automator adéquate pour les fichiers html (.htaccess ? j'y connais que dalle), donne des exemples, ça devrait être faisable sans difficultés au passage Ce message a été modifié par pardon - 24 Aug 2006, 02:20. -------------------- Riez, riez,
|
|
|
24 Aug 2006, 09:37
Message
#19
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 295 Inscrit : 10 Dec 2003 Membre no 12 371 |
CODE sips -z 600 800 --out "../$nom" "$img" sips -z 112 150 --out "../thumbnail/$nom" "$img" done un léger détail, ... forcer les tailles plutot que de faire une échelle me parait hasardeux -------------------- G4 2x1250, 1024, SoundStick, iSight, 22" LaCie, 20" Sony
|
|
|
24 Aug 2006, 12:14
Message
#20
|
|
Macbidouilleur d'Or ! Groupe : Modérateurs Messages : 3 818 Inscrit : 15 Mar 2004 Lieu : Région Parisienne Membre no 16 307 |
bah, c'est comme tu veux
je suppose que les images traitées par Pompon auront toujours ce rapport 4:3, et j'ai fait qu'appliquer ce qu'il demandait sinon, on peut remplacer -b 600 800 par exemple par --resampleWidth 800 et pareil pour l'autre sinon, je propose juste une seconde version peut-être un peu plus propre, en tout cas moins contraignante CODE #!/bin/sh
repTest=~/Desktop/test mkdir -p $repTest mkdir -p $repTest/thumbnail refs=$(mktemp -dt imgRef) cd $repTest for f in *; do touch "$refs/${f%.*}"; done cd $refs rm thumbnail for img in "$@" do nom=$(mktemp "$(echo ${img%.*} | sed 's:.*/::')_XXXXXXX").${img##*.} sips -z 600 800 --out "$repTest/$nom" "$img" sips -z 112 150 --out "$repTest/thumbnail/$nom" "$img" done -------------------- Riez, riez,
|
|
|
24 Aug 2006, 21:46
Message
#21
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 291 Inscrit : 25 Dec 2002 Lieu : Paris Membre no 5 299 |
Merci de ta contribution pardon !
Pour les photos elles n'ont pas toutes un rapport 4/3 (la majorité a une proportion "standard"). Ce que tu proposes ne permet pas de générer des lettres et nombres aléatoires dans des noms de fichiers ?! Je cherche à centraliser un maximum pour que cela soit le plus simple possible et le plus ouvert. Automator nécessitait Tiger, le script est plus tolérant et c'est un plus. Par contre ton code est beaucoup plus court ! En terme de performance je ne sais pas s'il y a des différences. Et puis j'aime bien le Generateur de Nom zarbi du script de AlbertLevert ps : pour la page html c'est vraiment tout bête. Je crée avec Automator un document text edit, j'insère un texte toujours identique "No access..." et j'enregistre le fichier en lui demandant de s'appeler index.htm. Je pense qu'il est possible de le faire avec un script (et l'intégrer dans celui de AlbertLevert). Je regarderais ce week-end. @+ -------------------- iMac Intel Core i5 27 pouces 3,2Ghz 2013, 8Go de Ram avec 10.15.7.
|
|
|
25 Aug 2006, 02:15
Message
#22
|
|
Macbidouilleur d'Or ! Groupe : Modérateurs Messages : 3 818 Inscrit : 15 Mar 2004 Lieu : Région Parisienne Membre no 16 307 |
euh, si si ça fait bien aussi ce que tu demandais : une_image.xyz ~> une_image_Cg5m8Po.xyz
pour le fichier html, ça représente une ligne à rajouter dans le shell script (à peine plus dans l'AppleScript) faut donc aussi modifier les deux appels de sips en utilisant --resampleWidth au lieu du -z pour avoir le bon comportement, comme dit plus tôt Ce message a été modifié par pardon - 25 Aug 2006, 02:23. -------------------- Riez, riez,
|
|
|
31 Aug 2006, 17:25
Message
#23
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 291 Inscrit : 25 Dec 2002 Lieu : Paris Membre no 5 299 |
Re,
Je reviens sur ce post pour re-re-re-demander une nouvelle petite modif Le script d'AlbertLevert fonctionne très bien. Cependant il ne fait pas comme Automator pour redimensionner les images. En effet, il fait une échelle pour mettre les images avec une largeur fixe de 800 (et de 150 pour les miniatures). J'aimerai savoir s'il était possible de faire la distinction paysage/portrait afin d'avoir les images en portrait en 600x800 et les images en paysage en 800x600 ? Dernière question facultative : est-il possible de créer facilement un document textedit avec un texte prédéfini et une extension .htm avec l'éditeur de script ? Merci ! -------------------- iMac Intel Core i5 27 pouces 3,2Ghz 2013, 8Go de Ram avec 10.15.7.
|
|
|
Guest_JackJr300_* |
31 Aug 2006, 17:44
Message
#24
|
Guests |
Salut
CITATION(Pompon @ 31 Aug 2006, 17:25) [snapback]1856731[/snapback] J'aimerai savoir s'il était possible de faire la distinction paysage/portrait afin d'avoir les images en portrait en 600x800 et les images en paysage en 800x600 ? En utilisant scale to size, Çà rescale selon le plus grand nombre de pixels , la hauteur ou la largeur. Remplace les deux prorperty et le block tell application "Image Events" CODE property LargeurouHAuteurMaxi_1 : 800
property LargeurouHAuteurMaxi_2 : 150 tell application "Image Events" launch set Image1 to open aFile set Image2 to Image1 scale Image1 to size LargeurouHAuteurMaxi_1 save Image1 in NouvelleImage_1 scale Image1 to size LargeurouHAuteurMaxi_2 save Image2 in NouvelleImage_2 close Image1 end tell Ce message a été modifié par JackJr300 - 31 Aug 2006, 17:46. |
|
|
31 Aug 2006, 18:08
Message
#25
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 291 Inscrit : 25 Dec 2002 Lieu : Paris Membre no 5 299 |
Merci beaucoup JackJr300 c'est tout bon !
Je remet le script en entier : CODE property lesChiffre : {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"} property LesMinusCule : {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"} property LesMaj : {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"} property LongExt : 4 property LargeurouHAuteurMaxi_1 : 800 property LargeurouHAuteurMaxi_2 : 150 property DossierThumbnails : "thumbnail" on run set leDossierAconvertir to choose folder set leBureau to (path to desktop folder) as string display dialog "Nom du nouveau dossier" default answer "test" buttons {"Ok", "Annuler"} default button 1 copy the result as list to {text_returned, button_pressed} if button_pressed = "Annuler" then return end if set DossierDest to text_returned log DossierDest -- LA ligne a modifier pour le dossier final ! -- par exemple : -- set MonDossierArrivee to "Macintosh HD:USers:MonNom:Documents:ici:" set MonDossierArrivee to leBureau set MonDossierArrivee2 to MonDossierArrivee & DossierDest tell application "Finder" try make new folder at folder MonDossierArrivee with properties {name:DossierDest} on error log "Le dossier " & DossierDest & " existe déja !" return end try try make new folder at folder MonDossierArrivee2 with properties {name:DossierThumbnails} on error --log "Le dossier DossierThumbnails existe déja !" end try end tell tell application "Finder" to set selectedFiles to (select every file of folder leDossierAconvertir) tell application "Finder" to set leNbFichier to (count of every file of folder leDossierAconvertir) if leNbFichier = 0 then beep display dialog "Aucun fichier trouvé !" buttons {"ok"} giving up after 5 return end if repeat with XX from 1 to leNbFichier --Generateur de Nom zarbi :D set UnTruc to "" if leNbFichier = 1 then set aFile to selectedFiles as string else set aFile to item XX of selectedFiles set aFile to aFile as string end if tell application "Finder" to set leNom to name of (alias aFile) repeat with i from 1 to 2 set UnTruc to UnTruc & some item of lesChiffre if i = 1 then set UnTruc to UnTruc & some item of LesMinusCule else set UnTruc to UnTruc & some item of LesMaj end if end repeat set leNomLong to (count of character of (leNom as string)) set Nombase to text 1 thru (leNomLong - LongExt) of leNom set LExtension to text from (leNomLong - (LongExt - 1)) to leNomLong of leNom set NomFinal to Nombase & "_" & UnTruc & LExtension set NouvelleImage_1 to MonDossierArrivee2 & ":" & NomFinal set NouvelleImage_2 to MonDossierArrivee2 & ":" & DossierThumbnails & ":" & NomFinal -- creation des images tell application "Image Events" launch set Image1 to open aFile set Image2 to Image1 scale Image1 to size LargeurouHAuteurMaxi_1 save Image1 in NouvelleImage_1 scale Image1 to size LargeurouHAuteurMaxi_2 save Image2 in NouvelleImage_2 close Image1 end tell end repeat end run @+ Ce message a été modifié par Pompon - 31 Aug 2006, 18:10. -------------------- iMac Intel Core i5 27 pouces 3,2Ghz 2013, 8Go de Ram avec 10.15.7.
|
|
|
1 Sep 2006, 19:28
Message
#26
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 291 Inscrit : 25 Dec 2002 Lieu : Paris Membre no 5 299 |
...
J'ai encore une question Est-il possible de rendre aléatoire la composition des "noms zarbis"© car pour le moment j'ai un chiffre, une minuscule, un chiffre, une majuscule ? Exemple : test_xS7a.jpg et pas test_1d5F.jpg Merci ! -------------------- iMac Intel Core i5 27 pouces 3,2Ghz 2013, 8Go de Ram avec 10.15.7.
|
|
|
1 Sep 2006, 20:58
Message
#27
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 2 266 Inscrit : 12 Mar 2006 Lieu : City of Sails Membre no 57 388 |
salut,
ouais, il suffirait de faire une seule liste regroupant lesChiffre, LesMinusCule et les Maj. cependant, il se pourrait par la suite que ca te fasse des "doublons de type" (que tu aies deux fois des minuscules et pas de majuscule par exemple). -------------------- |.... je suis fiu ....|
-------------------- |
|
|
1 Sep 2006, 21:33
Message
#28
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 291 Inscrit : 25 Dec 2002 Lieu : Paris Membre no 5 299 |
Salut p1ngu01,
Faire des "doublons de type" n'est pas un problème. Avoir par exemple comme base deux chiffres et deux lettres sans aucun ordre précis serait l'idéal. La question est : comment faire ?! Je pense qu'il faut modifier cette partie du code : CODE repeat with i from 1 to 2 set UnTruc to UnTruc & some item of lesChiffre if i = 1 then set UnTruc to UnTruc & some item of LesMinusCule else set UnTruc to UnTruc & some item of LesMaj end if end repeat Des indices ? -------------------- iMac Intel Core i5 27 pouces 3,2Ghz 2013, 8Go de Ram avec 10.15.7.
|
|
|
Guest_JackJr300_* |
1 Sep 2006, 21:38
Message
#29
|
Guests |
Bonsoir
Ceci mélange une majuscule, une minuscule et deux chiffres dans un ordre aléatoire Remplace CODE repeat with i from 1 to 2 set UnTruc to UnTruc & some item of lesChiffre if i = 1 then set UnTruc to UnTruc & some item of LesMinusCule else set UnTruc to UnTruc & some item of LesMaj end if end repeat par ce code CODE set lettres_chifres to some item of LesMinusCule & some item of LesMaj & (random number from 10 to 99) set nbrList to {} repeat until (count UnTruc) = 4 --mélange majuscule, minuscule et les deux chiffres tell (random number from 1 to 4) to if it is not in nbrList then set UnTruc to UnTruc & item it of lettres_chifres set end of nbrList to it end if end repeat |
|
|
1 Sep 2006, 21:41
Message
#30
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 2 266 Inscrit : 12 Mar 2006 Lieu : City of Sails Membre no 57 388 |
ah ben, il suffit de faire une liste comme ca :
property lesCaracteres : {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"} et faire: repeat 4 times set UnTruc to UnTruc & some item of lesCaracteres end repeat poskryptum : j'ai fait ca vite fait a toi de verifier si ca marche (je suis pas sur mac la) -------------------- |.... je suis fiu ....|
-------------------- |
|
|
Nous sommes le : 22nd October 2024 - 15:40 |