0 votos

¿Puedo utilizar AppleScript para pegar un clip de texto web anexado con atribución de fuente y un timestamp, manteniendo vínculos incrustados?

Novato aquí, así que por favor, hágamelo saber si debo de aclarar o de otra manera mejorar mi pregunta. He buscado varias veces con diferentes palabras clave y no han sido capaces de encontrar una solución a mi problema, o hacer que los que yo esperaba que fuera una solución de trabajo para mí.

Quiero crear una secuencia de comandos de AppleScript que cuando se activa me va a permitir pegar un texto web clip anexa con la atribución de fuentes y una marca de tiempo, sin perder los enlaces dentro del texto seleccionado.

Aquí está una captura de pantalla de lo que quiero lograr:

Screenshot

No saber mucho de nada de programación, yo era capaz de improvisar la siguiente secuencia de comandos de AppleScript después de unos días de búsqueda en internet.

-- clear the clipboard
tell application "Finder"
    set the clipboard to " "
    delay 0.1
end tell

-- copy selected text
tell application "Safari"
    activate
    tell application "System Events"
        tell process "Safari"
            keystroke "c" using {command down}
            delay 0.1
        end tell
    end tell
end tell

-- open and paste web clip into specified TextEdit file 
tell application "TextEdit"
    activate
    open "Macintosh HD:Users:Web:Documents:Web Text Clips:Web_Text_Clips.rtf"
    delay 0.2
    tell application "System Events"
        tell process "TextEdit"
            keystroke "v" using {command down}
            delay 0.1
        end tell
    end tell
end tell

-- get, format and copy source info and timestamp 
tell application "Safari"
    activate
    set theLongDate to current date
    set theWindowName to the name of the front window
    set theURL to the URL of the front document
    set writeString to "- - - - - " & return & "From: " & theURL & return & "Page Title: " & theWindowName & return & "Date: " & theLongDate
    set the clipboard to writeString
end tell

-- paste source info and timestamp into predefined position of the specified TextEdit file 
tell application "TextEdit"
    activate
    tell application "System Events"
        tell process "TextEdit"
            keystroke (ASCII character 31) using command down
            keystroke return
            keystroke return
            keystroke "v" using {command down}
            delay 0.1
        end tell
    end tell
end tell

-- copy content of specified TextEdit file 
tell application "TextEdit"
    activate
    tell application "System Events"
        tell process "TextEdit"
            keystroke "a" using {command down}
            keystroke "c" using {command down}
            delay 0.1
        end tell
    end tell
end tell

-- delete content of specified TextEdit file 
tell application "TextEdit"
    activate
    tell application "System Events"
        tell process "TextEdit"
            keystroke "a" using {command down}
            keystroke "x" using {command down}
            delay 0.1
        end tell
    end tell
end tell

-- save specified TextEdit file and quit TextEdit
tell application "TextEdit"
    save "Macintosh HD:Users:Web:Documents:Web Text Clips:Web_Text_Clips.rtf"
    quit
end tell

Me vi obligada a esta solución, ya que cuando he utilizado el set comando de los enlaces integrados obtuvo de los archivos de la web seleccionada texto.

Mientras que este script no funciona, es bastante engorroso y lento. He intentado todo tipo de cosas diferentes, incluyendo algunos script de shell de comandos, pero hasta ahora nada ha funcionado.

Alguien me puede ayudar en la creación de una forma más elegante y más rápido secuencia de comandos que todavía mantiene los enlaces integrados en la web seleccionada texto?

Estoy corriendo macOS Sierra 10.12.6.

-1voto

Estoy un poco confundido por su guión, que parece copiar y pegar y eliminar y guardar, así que si no he entendido su intención de uso, pido disculpas. A mí me parece que desea que un archivo guardado en que los Clips de la Web de la carpeta que contiene lo que se había seleccionado en Safari con el enlace, el título y la fecha. Me gustaría escribir esto como un archivo HTM en lugar de un archivo de texto, y aquí está el código que he usado con los comentarios en línea.

set myFolder to ((path to users folder) as text) & "Web:Documents:Web Text Clips:"
set myFile to myFolder & "Web_Text_Clips.htm"

tell application "Safari"
set theLongDate to current date
set theWindowName to the name of the front window
set selectedText to (do JavaScript "(''+getSelection())" in document 1) --use javascript to get what part of the page is selected
set theURL to the URL of the front document
end tell

set myFolder to POSIX path of (myFolder as alias) --convert to posix path for use in the command line
set myFile to quoted form of (myFolder & myFile) --append the file name to the end of the file path
do shell script "touch " & myFile --create the htm file

--Add content to the HTM document
newHTM(myFile) --Add the HTM doctype and opening tags.
addElement("p", "--------", myFile) --"p" is the htm tag for a paragraph, and we want this to be it's own paragraph. 
addElement("p", "From: <a href=" & theURL & ">" & theURL & "</a>", myFile) --a bit more complex, adding a paragraph with a link (<a> is the link tag)
addElement("p", "Page Title: " & theWindowName, myFile) --Adding a paragraph for the Page Title
addElement("p", "Date: " & theLongDate, myFile) --Adding a paragraph for the Date line.
closeHTM(myFile) --Add the closing HTML tags.

------------HANDLERS------------
on newHTM(filePath)
    do shell script "printf '<!doctype html>\n<html lang=\"en\">\n<head>\n\t<title>Web Clips</title>\n\n</head>\n\n<body>\n\t' > " & filePath
end newHTM

on closeHTM(filePath)
    do shell script "printf '\n\t</body>\n</html>' >> " & filePath
end closeHTM

on addElement(elem, htm, filePath)
    set htm to "\t\t<" & elem & ">" & htm & "</" & elem & ">\n"
    do shell script "printf '" & htm & "' >> " & filePath
end addElement

Esta secuencia de comandos se conserva el vínculo mediante el uso de HTML para "incrustar" en el enlace. Se abrirá en el navegador predeterminado. Me parecía, a partir de su secuencia de comandos, que este archivo sólo contiene la última versión web de recorte, así es como yo lo escribí. Si, sin embargo, desea que este archivo que contiene una lista de web recortes, el script necesita ser corregido. De cualquier manera, espero que esto le da un buen comienzo. Para mejorar la legibilidad, me puso la adición de código html en los controladores de debajo del cuerpo del código.

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