IPB

Bienvenue invité ( Connexion | Inscription )

3 Pages V   1 2 3 >  
Reply to this topicStart new topic
> [Résolu] Insérer lettres et nombres aléatoires dans des noms de fichier, avec AppleScript
Options
Pompon
posté 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 mad.gif

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 wink.gif
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. thumb.gif

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.
Go to the top of the page
 
+Quote Post
p1ngu01
posté 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... unsure.gif


--------------------
|.... je suis fiu ....|
--------------------
Go to the top of the page
 
+Quote Post
Pompon
posté 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 wink.gif



--------------------
iMac Intel Core i5 27 pouces 3,2Ghz 2013, 8Go de Ram avec 10.15.7.
Go to the top of the page
 
+Quote Post
p1ngu01
posté 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 unsure.gif ouais, je pense... smile.gif


--------------------
|.... je suis fiu ....|
--------------------
Go to the top of the page
 
+Quote Post
AlbertLevert
posté 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


ph34r.gif


--------------------
G4 2x1250, 1024, SoundStick, iSight, 22" LaCie, 20" Sony
Go to the top of the page
 
+Quote Post
baron
posté 22 Aug 2006, 04:36
Message #6


Macbidouilleur d'Or !
*****

Groupe : Modérateurs
Messages : 19 478
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 ? huh.gif


--------------------
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…
Go to the top of the page
 
+Quote Post
Pompon
posté 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.
Go to the top of the page
 
+Quote Post
AlbertLevert
posté 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


blink.gif

Ce message a été modifié par AlbertLevert - 22 Aug 2006, 12:34.


--------------------
G4 2x1250, 1024, SoundStick, iSight, 22" LaCie, 20" Sony
Go to the top of the page
 
+Quote Post
Pompon
posté 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. wink.gif


--------------------
iMac Intel Core i5 27 pouces 3,2Ghz 2013, 8Go de Ram avec 10.15.7.
Go to the top of the page
 
+Quote Post
AlbertLevert
posté 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 ...
rolleyes.gif

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
Go to the top of the page
 
+Quote Post
Pompon
posté 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 ! smile.gif

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.
Go to the top of the page
 
+Quote Post
Pompon
posté 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.
Go to the top of the page
 
+Quote Post
AlbertLevert
posté 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"

blink.gif

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
Go to the top of the page
 
+Quote Post
p1ngu01
posté 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 ....|
--------------------
Go to the top of the page
 
+Quote Post
Pompon
posté 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.
Go to the top of the page
 
+Quote Post
AlbertLevert
posté 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
blink.gif

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
Go to the top of the page
 
+Quote Post
Pompon
posté 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.
Go to the top of the page
 
+Quote Post
pardon
posté 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 unsure.gif
pour les fichiers html (.htaccess ? unsure.gif 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, …
Go to the top of the page
 
+Quote Post
AlbertLevert
posté 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

blink.gif


--------------------
G4 2x1250, 1024, SoundStick, iSight, 22" LaCie, 20" Sony
Go to the top of the page
 
+Quote Post
pardon
posté 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 biggrin.gif
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 wink.gif
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, …
Go to the top of the page
 
+Quote Post
Pompon
posté 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 wink.gif

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.
Go to the top of the page
 
+Quote Post
pardon
posté 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 huh.gif ç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, …
Go to the top of the page
 
+Quote Post
Pompon
posté 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 wink.gif

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.
Go to the top of the page
 
+Quote Post
Guest_JackJr300_*
posté 31 Aug 2006, 17:44
Message #24





Guests






Salut smile.gif
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.
Go to the top of the page
 
+Quote Post
Pompon
posté 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 ! smile.gif

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.
Go to the top of the page
 
+Quote Post
Pompon
posté 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 emot_012.gif

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.
Go to the top of the page
 
+Quote Post
p1ngu01
posté 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).

wink.gif


--------------------
|.... je suis fiu ....|
--------------------
Go to the top of the page
 
+Quote Post
Pompon
posté 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.
Go to the top of the page
 
+Quote Post
Guest_JackJr300_*
posté 1 Sep 2006, 21:38
Message #29





Guests






Bonsoir smile.gif

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
Go to the top of the page
 
+Quote Post
p1ngu01
posté 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 ....|
--------------------
Go to the top of the page
 
+Quote Post

3 Pages V   1 2 3 >
Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 16th July 2024 - 09:33