0 votos

Llamando a la captura de pantalla de una página web en AppleScript

Como un recién llegado a AppleScript, es muy posible que me falta algo obvio, pero le agradecería que los comentarios! Mi intención es utilizar Safari para cargar una serie de imágenes de un tema de The New Yorker y guardar como una secuencia de archivos png.

Aquí está mi intento (lo siento por la extraña apariencia de este, pero he tenido problemas con copiar/pegar en el 'cuerpo' de este mensaje debido a los comentarios en mi código) :

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

Parece que todo funciona como se espera hasta que el intento de capturar la pantalla a un archivo de salida cuando me encuentro con dos problemas:

~ no de los archivos de salida se creó (el mismo comando en el terminal funciona)

~ la opción-R para "captura de pantalla" para seleccionar la parte de la ventana no funciona

Gracias, por los consejos!

1voto

wch1zpink Puntos 11

Siempre que puedo intento generalmente sólo utilizar AppleScript y shell script, pero cada ahora y entonces, me parece una joya escondida en Automator. Simplemente he creado un nuevo flujo de trabajo de Automator y añadió tres acciones... "Obtener la Actual Página web Desde Safari","Obtener los Contenidos De las Páginas web", y "Guardar Imágenes De Contenido Web".

Este a mi me funciona con la última versión de macOS Mojave.

enter image description here

Sólo tienes que guardar el flujo de trabajo de Automator como una aplicación o como un servicio o el dictado de comandos, etc...

Para este proyecto, mi elección sería simplemente guardar el flujo de trabajo de Automator en la carpeta... /Usuarios/TU NOMBRE/Biblioteca/Scripts/Aplicaciones/Safari (si el Safari de la carpeta no existe, simplemente puede crear el Safari de la carpeta durante el proceso de almacenamiento de su flujo de trabajo de Automator) Guardar el archivo en ese lugar, se hará de manera que en cualquier momento que usted está usando Safari, usted puede ejecutar el flujo de trabajo de las secuencias de comandos de la barra de menú.

enter image description here

Si las secuencias de comandos de menú no está ya en su barra de menú, usted puede permitir que en el panel General de las Preferencias de menú del Editor de secuencias de Comandos.aplicación

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by: