En tant que nouveau venu dans le monde d'AppleScript, il est fort possible que je manque quelque chose d'évident, mais j'apprécierais un retour d'information ! J'ai l'intention d'utiliser Safari pour charger une série d'images provenant d'un numéro du New Yorker et de les sauvegarder sous la forme d'une séquence de fichiers png.
Voici ma tentative (désolé pour l'aspect étrange de ce document mais j'ai eu des problèmes avec le copier/coller dans le 'corps' de ce message à cause des commentaires dans mon code) :
set i to 1
repeat 10 times
(*
format pagenumber to 11 characters
format outfile to 7 characters *)
if i is less than 10 then
set pagenumber to "page000000" & i & ".jpg"
set outfile to "page00" & i & ".png"
else
if i is less than 100 then
set pagenumber to "page00000" & i & ".jpg"
set outfile to "page0" & i & ".png"
else
set pagenumber to "page0000" & i & ".jpg"
set outfile to "page" & i & ".png"
end if
end if
(* generate URL *)
set html to "https://archives.newyorker.com/rvimageserver/Conde%20Nast/New%20Yorker/1967_09_02/" & pagenumber
tell application "Safari"
if not (exists document 1) then reopen
(* load URL *)
tell current tab of window 1 to set URL to html
(* get the id of that window *)
set window_id to id of window 1
(* when web page has finally loaded, the resultant document will consist of the page number plus 2,048×2,797 pixels, or 2,048×2,881 pixels ie "page0000002.jpg 2,048×2,797 pixels" or "page0000010.jpg 2,048×2,881 pixels" *)
set thename to pagenumber & " 2,048×2,797 pixels"
set othename to pagenumber & " 2,048×2,881 pixels"
(* wait for page to load see https://apple.stackexchange.com/questions/319986/applescript-help-wait-for-safari-page-to-load *)
set myexit to "false"
repeat while myexit = "false"
if the document named (thename) exists then
set myexit to "true"
end if
if the document named (othename) exists then
set myexit to "true"
end if
end repeat
delay 2
end tell
(* caputure the image element of window and save to outfile *)
do shell script ("screencapture -R 518,111,640,877 -l " & window_id & " " & outfile)
delay 2
(* increment count *)
set i to i + 1
end repeat
Tout semble fonctionner comme prévu jusqu'à ce que j'essaie de capturer l'écran vers un fichier de sortie lorsque je rencontre deux problèmes :
~ aucun fichier de sortie n'est créé (la même commande dans le terminal fonctionne)
~ l'option -R de "screencapture" pour sélectionner une partie de la fenêtre ne fonctionne pas
Merci, pour tout conseil !