Coup de pouce AppleScript

Le
benoit.sansspam
Bonjour,

Je dois renommer un paquet de fichiers html. Le nom à donner au
fichier est le titre du html, ce qui fait que si je demande à Safari
d'enregistrer le fichier il me propose le bon nom par défaut.

tell application "Safari"
activate
save front document
tell application "System Events"
delay 5
keystroke return
end tell
close front document
end tell

Et ça ne fonctionne pas, le return n'est pas envoyé. Une fois
que j'ai ça, je fais ma boucle en repeat avec les fichiers à gérer et
tout est bon (avec un try dedans au cas où).

Quelqu'un a une idée ?


--
Benoît http://picasaweb.google.com/leraillez/

Avec des fumeurs c'est difficile de s'arrêter. Avec des branleurs,
là, par contre, c'est difficile de continuer.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrick Stadelmann
Le #22446591
In article
(Benoit) wrote:

Bonjour,

Je dois renommer un paquet de fichiers html. Le nom à donner au
fichier est le titre du html, ce qui fait que si je demande à Safari
d'enregistrer le fichier il me propose le bon nom par défaut.

tell application "Safari"
activate
save front document
tell application "System Events"
delay 5
keystroke return
end tell
close front document
end tell

Et ça ne fonctionne pas, le return n'est pas envoyé. Une fois
que j'ai ça, je fais ma boucle en repeat avec les fichiers à gérer et
tout est bon (avec un try dedans au cas où).

Quelqu'un a une idée ?



Normal, "save front document" ne rend la main que lorsque la fenêtre est
fermée, on ne peut pas l'ouvrir avec une commande et la fermer via le
GUI scripting. Il faut donc envoyer un "Commande + S" au lieu d'appeler
la commande "save".

Ou, mieux, ne pas utiliser le GUI scripting, par exemple :

set f to (choose folder) as text
tell application "Safari"
save front document in (f & (name of front document))
end tell

Patrick
--
Patrick Stadelmann
Patrick Stadelmann
Le #22446631
In article
(Benoit) wrote:

Bonjour,

Je dois renommer un paquet de fichiers html. Le nom à donner au
fichier est le titre du html, ce qui fait que si je demande à Safari
d'enregistrer le fichier il me propose le bon nom par défaut.

tell application "Safari"
activate
save front document
tell application "System Events"
delay 5
keystroke return
end tell
close front document
end tell

Et ça ne fonctionne pas, le return n'est pas envoyé. Une fois
que j'ai ça, je fais ma boucle en repeat avec les fichiers à gérer et
tout est bon (avec un try dedans au cas où).

Quelqu'un a une idée ?



Normal, "save front document" ne rend la main que lorsque la fenêtre est
fermée, on ne peut pas l'ouvrir avec une commande et la fermer via le
GUI scripting. Il faut donc envoyer un "Commande + S" au lieu d'appeler
la commande "save".

Ou, mieux, ne pas utiliser le GUI scripting, par exemple :

set f to (choose folder) as text
tell application "Safari"
save front document in (f & (name of front document))
end tell

Variante, qui ne crée pas une copie du fichier mais ne fait que changer
son nom :

set f to choose file
tell application "Safari"
open f
set n to name of front document
close front document
end tell
tell application "Finder"
set name of f to n & ".html"
end tell

Patrick
--
Patrick Stadelmann
benoit.sansspam
Le #22447751
Patrick Stadelmann
Normal, "save front document" ne rend la main que lorsque la fenêtre est
fermée, on ne peut pas l'ouvrir avec une commande et la fermer via le
GUI scripting. Il faut donc envoyer un "Commande + S" au lieu d'appeler
la commande "save".

Ou, mieux, ne pas utiliser le GUI scripting, par exemple :

set f to (choose folder) as text
tell application "Safari"
save front document in (f & (name of front document))
end tell



Merci pour l'explication, j'ai fini par trouver en recopiant des
trucs à droite et à gauche, mais :

- c'est lent
- ça a fini par bugger puisque je n'ai que les 600 et quelques
premiers documents qui ont été géré, les autres ont été
ouverts et refermés sans être enregistrés.

Variante, qui ne crée pas une copie du fichier mais ne fait que changer
son nom :

set f to choose file
tell application "Safari"
open f
set n to name of front document
close front document
end tell
tell application "Finder"
set name of f to n & ".html"
end tell



Avec ça je pense que cela ira plus vite et en plus ça tournera
en arrière plan, la première version fait qu'on ne peut pas utiliser la
machine à cause des keystrokes.

J'en étais avec ce qui suit et je vais essayer d'utiliser ton
idée qui doit être beaucoup plus rapide.

tell application "Finder"
set the source_folder to choose folder with prompt "Dossier source :"
set these_files to every file of the source_folder
repeat with i from 1 to the count of these_files
set ActiveFile to item i of these_files as alias
open ActiveFile
tell application "Safari"
-- si on va trop vite Safari n'a pas le temps de renommer
-- la fenêtre avec le <title> d'où le delay
delay 0.2
set n to name of front document
close front document
try
tell application "Finder"
set name of ActiveFile to n & ".html"
end tell

end try
end tell
end repeat
end tell

Ça fonctionne pour un millier de fichier, il ne me reste plus
qu'à tenter sur le gros dossier de 5Ok fichiers. J'ai un doute car je
parie que le Finder va me faire un time out lorsqu'il va générer la
liste de fichiers donc j'ajoute :
with timeout of (30 * 60) seconds


--
Benoît http://picasaweb.google.com/leraillez/

Avec des fumeurs c'est difficile de s'arrêter. Avec des branleurs,
là, par contre, c'est difficile de continuer.
benoit.sansspam
Le #22448311
JM Marino
C'est typiquement le genre d'opération qui aurait tout intérêt à être
réalisée en Perl !



Certes, mais je fais avec ce que je sais faire, on m'a dit
Python aussi ;)


--
Benoît http://picasaweb.google.com/leraillez/

Avec des fumeurs c'est difficile de s'arrêter. Avec des branleurs,
là, par contre, c'est difficile de continuer.
pdorange
Le #22449101
Benoit
> C'est typiquement le genre d'opération qui aurait tout intérêt à être
> réalisée en Perl !

Certes, mais je fais avec ce que je sais faire, on m'a dit
Python aussi ;)



Je confirme en Python c'est assez simple, pour peu d'avoir des notions
de python bien sur.

--
Pierre-Alain Dorange
Ce message est sous licence Creative Commons "by-nc-sa-2.0"
Paul Gaborit
Le #22449171
À (at) Fri, 6 Aug 2010 16:33:04 +0200,
(Pierre-Alain Dorange) écrivait (wrote):

Benoit
> C'est typiquement le genre d'opération qui aurait tout intérêt à être
> réalisée en Perl !

Certes, mais je fais avec ce que je sais faire, on m'a dit
Python aussi ;)



Je confirme en Python c'est assez simple, pour peu d'avoir des notions
de python bien sur.



Et en Ruby ? C'est parce que c'est l'été qu'il n'y a personne pour dire
qu'en Ruby ce serait tout aussi facile ?

;-)

--
Paul Gaborit -
pdorange
Le #22449291
Paul Gaborit
>> Certes, mais je fais avec ce que je sais faire, on m'a dit
>> Python aussi ;)
>
> Je confirme en Python c'est assez simple, pour peu d'avoir des notions
> de python bien sur.

Et en Ruby ? C'est parce que c'est l'été qu'il n'y a personne pour dire
qu'en Ruby ce serait tout aussi facile ?



Si, si Ruby aussi (bien que perso jamais testé) mais ça doit aussi
pouvoir se faire en java, PHP, etc...

--
Pierre-Alain Dorange
Ce message est sous licence Creative Commons "by-nc-sa-2.0"
xavier
Le #22449771
Pierre-Alain Dorange
Si, si Ruby aussi (bien que perso jamais testé) mais ça doit aussi
pouvoir se faire en java, PHP, etc...



Fut un temps où n'existait que le C (et aussi Pascal, mébon, ou COBOL,
Fortran), bref, à cette époque, quand j'avais un truc de ce genre à
faire, je le codais en Lighspeed C, qui devint THINK C, puis fut bouffé
en abandonné par Symantec.

--
XAv
In your pomp and all your glory you're a poorer man than me,
as you lick the boots of death born out of fear.
benoit.sansspam
Le #22449831
Xavier
Pierre-Alain Dorange
> Si, si Ruby aussi (bien que perso jamais testé) mais ça doit aussi
> pouvoir se faire en java, PHP, etc...

Fut un temps où n'existait que le C (et aussi Pascal, mébon, ou COBOL,
Fortran), bref, à cette époque, quand j'avais un truc de ce genre à
faire, je le codais en Lighspeed C, qui devint THINK C, puis fut bouffé
en abandonné par Symantec.



Ahhhhh ! Le Pascal, la fin de mon adolescence, parce qu'au début
c'était Basic de chez Basic.

--
Benoît http://picasaweb.google.com/leraillez/

Avec des fumeurs c'est difficile de s'arrêter. Avec des branleurs,
là, par contre, c'est difficile de continuer.
gerald.coyot
Le #22450451
Benoit
Xavier
> Pierre-Alain Dorange >
> > Si, si Ruby aussi (bien que perso jamais testé) mais ça doit aussi
> > pouvoir se faire en java, PHP, etc...
>
> Fut un temps où n'existait que le C (et aussi Pascal, mébon, ou COBOL,
> Fortran), bref, à cette époque, quand j'avais un truc de ce genre à
> faire, je le codais en Lighspeed C, qui devint THINK C, puis fut bouffé
> en abandonné par Symantec.

Ahhhhh ! Le Pascal, la fin de mon adolescence, parce qu'au début
c'était Basic de chez Basic.



Ah le binaire sans compilateur.
Si, si, j'ai fait une fois et ça marchait.
--
Amitiés, Gérard Cojot
'Bienheureux les fêlés, ils laisseront passer ma lumière'[M.Audiard]
http://perso.orange.fr/gerard.cojot/
Publicité
Poster une réponse
Anonyme