8 votos

¿AppleScript para guardar la ventana actual de Safari en formato de archivo web?

Sin usar scripts de GUI ¿Cómo puedo usar AppleScript para decir Safari ¿Guardar la página actual del navegador en un archivo en formato webarchive? Lo siguiente produce un error "The document “...” could not be exported as “foo.webarchive” (donde "..." es el título de la página web actual, sea cual sea):

set the_filepath to "/tmp/foo.webarchive"
tell application "Safari"
    activate
    save document 1 in the_filepath
end tell

He probado variaciones de esto, como diferentes extensiones de nombres de archivos (por ejemplo, .html ) para ver si algo funciona, pero siempre se produce un error. He probado diferentes formas de especificar el nombre del archivo, pero eso también produce errores (de otro tipo). He probado a utilizar save ... as ".webarchive" en lugar de la simple save arriba, pero eso produce un error diferente sobre "el documento 1 no entiende el mensaje de guardado".

El diccionario de AppleScript para Safari 11 tiene esta descripción:

save v : Save a document.
  save specifier : The document(s) or window(s) to save.
    [in file] : The file in which to save the document.
    [as saveable file format] : The file format to use.

Esto implica que debería ser posible guardar la página web actual en un formato específico que entienda Safari (como, con suerte, webarchive), y que simplemente no he averiguado la sintaxis correcta.

0 votos

Si no puedes encontrar otra forma que no sea a través de UI Scripting, aquí tienes un buen ejemplo de ello. AppleScript: Safari - Guardar como archivo web

0 votos

@user3439894 Gracias. Por desgracia, estoy intentando automatizar un flujo de trabajo más complicado, y necesito controlar cosas como dónde escribe el archivo. El diccionario de AppleScript para Safari implica que save debe aceptar un "como formato ", así que sigo esperando que realmente pueda funcionar y que simplemente no haya descubierto la sintaxis correcta.

0 votos

¿Has probado variaciones como "webarchive" y "Web Archive" ?

3voto

xilolee Puntos 11

He creado un script que guarda la pestaña actual en el escritorio como un archivo web. Crédito a newzealandpaul por su webarchiver comando del shell que potencia este script. Usted puede ajustar el código para satisfacer sus necesidades específicas, pero esto debería hacer lo que el código en su pregunta está tratando de hacer.

Aquí está el paquete script: SaveWebarchive

Esto funciona con el webarchiver comando agrupado;

set fileName to "foo"

tell application "Safari" to set targetURL to (URL of document 1) as string
set commandPath to POSIX path of (path to resource "webarchiver.command")
do shell script "" & commandPath & " -url " & targetURL & " -output ~/Desktop/" & fileName & ".webarchive"

Tenga en cuenta que el script descargado puede tener la interfaz del editor script mostrando el registro en toda la ventana.

0 votos

Así que descargo el código fuente de webarchiver y voy a construirlo y descubro que ya lo había hecho antes en septiembre. Prefiero leer el código fuente y construir el ejecutable frente a un ejecutable pre-construido cuando no conozco realmente el código fuente. De todos modos, tengo que admitir que después de leer el OP me centré en usar el save y se había olvidado de webarchiver . Funciona muy bien y, aunque no es mi pregunta, ¡daré un +1 por la respuesta!

0 votos

Entiendo que quieras compilarlo tú mismo. Sólo asegúrese de añadir .command al final del archivo y colócalo en la misma ubicación que el que te proporcioné.

0 votos

En realidad no debería necesitar la extensión .command siempre que webarchiver se establece como ejecutable. No lo he probado en AppleScript porque lo usé en septiembre desde la Terminal en un bash script como webarchiver y por eso sé que funciona bien.

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:

X