0 votes

Appeler la capture d'écran d'une page Web dans AppleScript

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 !

1voto

wch1zpink Points 6067

Lorsque je le peux, j'essaie généralement de n'utiliser qu'AppleScript et le shell script mais de temps en temps, je trouve un joyau caché dans Automator. J'ai simplement créé un nouveau flux de travail Automator et j'y ai ajouté trois actions... "Get Current Webpage From Safari", "Get Contents Of Webpages", et "Save Images From Web Content".

Cela fonctionne pour moi avec la dernière version de MacOS Mojave.

enter image description here

Il suffit d'enregistrer le flux de travail Automator en tant qu'application ou en tant que service ou commande de dictée... etc.

Pour ce projet, mon choix serait de simplement enregistrer le flux de travail Automator dans le dossier... /Utilisateurs/votre nom abrégé/Bibliothèque/scripts/Applications/Safari (si le dossier Safari n'existe pas, vous pouvez simplement créer le dossier Safari pendant le processus d'enregistrement de votre flux de travail Automator). En enregistrant le fichier à cet emplacement, vous pourrez, à chaque fois que vous utiliserez Safari, exécuter le flux de travail à partir de votre barre de menu scripts.

enter image description here

Si le menu scripts n'est pas déjà dans votre barre de menu, vous pouvez l'activer dans le menu Préférences générales de scripts Editor.app.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X