mrchow19910319 Posted March 8, 2017 Posted March 8, 2017 I felt that I am just here to make other people do stuff for me... I have no idea how to make workflows... however I need a workflow that makes safari opens copied url and then directly jumped to reading mode. So I can copy everything into evernote later. I have tried to use evernote workflow, but sometimes it is not as clean as doing it separately. Here is what I normally do: copy whatever url I need. use alfred to make safari opens a new window. paste that url in safari window. switch to reading mode. copy the whole page. What I wanted to achieve: copy the url I need. open the new workflow. copy the whole page. I want alfred to make safari open the last thing (in this case, a url) in my clipboard and then switched to reading mode automatically. You can ask me more questions if I did not make myself clear.
deanishe Posted March 8, 2017 Posted March 8, 2017 It's easy to open an new URL in Safari programatically, but Reader mode and copying the page can only be done by simulating user action. Put the following script in a Run Script Action with Language = /usr/bin/osascript (AS) connected to your Hotkey/Keyword. It grabs the clipboard text, and if it's a URL, opens it in Safari, waits a bit, activates Reader mode, waits a little bit more, then triggers Select All and Copy. Uncomment the two lines at the end of the script to also close the Safari tab/window afterwards. The big issue with this script (and this kind of scripting in general) is that there's no way to know when the page has loaded (Reader mode isn't available till it has), so the script just has to hope the page has loaded when it tries to enter Reader mode. Adjust the waitForLoad and waitForReader (both delays in seconds) settings at the top of the script if it's firing too quickly or too slowly. -- How long to wait for page to load in Safari before -- trying to activate Reader mode property waitForLoad : 5 -- How long to wait for Reader mode to finish its animated loading property waitForReader : 2 on run (argv) tell application "Safari" -- Get clipboard contents set theText to (the clipboard as text) -- Ensure it's a URL. This might fail if the URL is uppercase... if theText does not start with "http://" and theText does not start with "https://" then log "Invalid URL: " & theText -- Fail! return 1 end if -- Open URL in Safari log "Opening " & theText activate open location theText end tell tell application "System Events" -- Activate Reader mode. -- Now it gets tricky. We have to guess how long to wait for the page to -- load, as Reader mode isn't available till it has (if then). delay waitForLoad -- CMD+SHIFT+R activates Reader mode keystroke "r" using {command down, shift down} -- Wait for animation delay waitForReader -- CMD+A to select all, then CMD+C to copy keystroke "a" using command down delay 0.2 keystroke "c" using command down log "Page copied to clipboard" -- Uncomment the lines below to close the tab when done -- delay 0.4 -- keystroke "w" using command down end tell end run mrchow19910319 1
mrchow19910319 Posted March 9, 2017 Author Posted March 9, 2017 (edited) On 08/03/2017 at 7:43 PM, deanishe said: snip Dude... thank you so much... It worked like a charm... I got a feeling that I may have to ask for more workflows down the road.... maybe I can donate to you some money??? I feel bad for you to do this for me... Edit: I donated two dollars through packal. Hope you received it/ Thanks.. Will ask more sometime in the future. Edited March 9, 2017 by mrchow19910319
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now