0 votes

Puis-je utiliser AppleScript pour coller un clip de texte web avec l'attribution de la source et un horodatage, tout en conservant les liens incorporés ?

Je suis totalement novice en la matière et je vous prie de me faire savoir si je dois clarifier ou améliorer ma question. J'ai fait de nombreuses recherches en utilisant différents mots-clés et je n'ai pas été en mesure de trouver une solution à mon problème, ou de faire en sorte que celles que j'espérais être une solution fonctionnent pour moi.

Je souhaite créer un AppleScript script qui, lorsqu'il est déclenché, me permet de coller un extrait de texte web avec l'attribution de la source et un horodatage, sans perdre les liens incorporés dans le texte sélectionné.

Voici une capture d'écran de ce que je souhaite réaliser :

Screenshot

Ne connaissant pas grand-chose à la programmation, j'ai pu bricoler l'AppleScript script suivant après quelques jours de recherche sur le web.

-- 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

J'ai été contraint de recourir à cette solution de contournement, car lorsque j'utilisais la fonction set commande les liens incorporés ont été supprimés du texte web sélectionné.

Bien que ce script fonctionne, il est assez lourd et lent. J'ai essayé toutes sortes de choses différentes, y compris des commandes shell script, mais jusqu'à présent, rien d'autre n'a fonctionné.

Quelqu'un peut-il m'aider à créer un script plus élégant et plus rapide qui conserve les liens intégrés dans le texte Web sélectionné ?

Je travaille sous MacOS Sierra 10.12.6.

-1voto

Je suis un peu confus par votre script, il semble copier et coller et effacer et sauvegarder, donc si j'ai mal compris l'utilisation que vous vouliez en faire, je m'en excuse. Il me semble que vous voulez un fichier sauvegardé dans ce dossier Web Clips qui contient seulement ce que vous avez sélectionné dans Safari avec le lien, le titre et la date. Je l'écrirais comme un fichier HTM plutôt que comme un fichier texte, et voici le code que j'ai utilisé avec des commentaires en ligne.

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

Ce script préserve le lien en utilisant HTML pour "intégrer" le lien. Il s'ouvrira dans votre navigateur par défaut. Il m'a semblé, d'après votre script, que ce fichier ne contenait que la dernière coupure de presse, et c'est donc ainsi que je l'ai écrit. Si, toutefois, vous souhaitez que ce fichier contienne une liste de coupures de presse, il faudra modifier le script. Quoi qu'il en soit, j'espère que cela vous donnera un bon point de départ. Pour des raisons de lisibilité, j'ai placé l'ajout de code html dans des gestionnaires sous le corps du code.

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