NetNewsWire + Pocket
This is an AppleScript to post articles to Pocket (a.k.a. Read It Later) from the NetNewsWire RSS feed reader on Mac OS X.
Installation
Download the script and copy it to the location:
/Users/<your_user_name>/Library/Application Support/NetNewsWire/Scripts/
You should now see a new menu item under the scripts menu called 'NetNewsWire+Pocket' that posts the current article to Pocket. Clicking on that will prompt you to provide access to your getpocket.com credentials if you've already saved them to the keyring. If not, it'll ask you for your login details and save them to the keyring. Once that's done, you're all systems go for super fast feed reading!
Configuring a Keyboard Shortcut
You can configure a keyboard shortcut for this action by going to System Preferences > Keyboard > Keyboard Shortcuts > Application Shortcuts and adding a application shortcut with these parameters:
Application: NetNewsWire
Menu Title: NetNewsWire+Pocket
Keyboard Shortcut: Any key combination. (I use ⌘ D).
Source Code
-- NetNewsWire+Pocket: Add items to Pocket (Read It Later) from NetNewsWire.
-- Copyright (c) 2005-2011, Jaidev K Sridhar <mail . jaidev @ info>
-- Released under the GPL license version 2. http://www.gnu.org/licenses/gpl-2.0.html
-- Version: v20120613-1
-- INSTALLING:
-- Copy NetNewsWire+Pocket.scpt to /Users/$USER/Library/Application\ Support/NetNewsWire/Scripts/. A new item 'NetNewsWire+Pocket' shows up in the scripts menu when NetNewsWire is restarted.
-- ADDING A KEYBOARD SHORTCUT:
-- To configure a keyboard shortcut, open System Preferences > Keyboard > Keyboard Shortcuts > Application Shortcuts. Add a keyboard shortcut with these parameters:
-- * Application: NetNewsWire
-- * Menu Title: NetNewsWire+Pocket
-- * Keyboard Shortcut: Any key combination. (I use CMD + D).
tell application "GrowlHelperApp"
set the allNotificationsList to {"Success Notification", "Error Notification"}
set the enabledNotificationsList to {"Success Notification", "Error Notification"}
register as application "NetNewsWire+Pocket" all notifications allNotificationsList default notifications enabledNotificationsList icon of application "NetNewsWire"
end tell
tell application "NetNewsWire"
if index of selected tab = 0 then
-- We're looking at headlines, so just get the headline URL
set feed_url to URL of selectedHeadline
set feed_title to title of selectedHeadline
else
-- We're looking at a web view tab, so we need to know which tab
set i to index of selected tab
set i to i + 1
-- Get the tab's URL
set URL_list to URLs of tabs
set title_list to titles of tabs
set feed_url to item i of URL_list
set feed_title to item i of title_list
end if
set pocket_user to do shell script "security 2> /dev/null find-internet-password -gs getpocket.com | grep acct | cut -d '\"' -f4"
if pocket_user = "" then
display dialog "Pocket (Read it Later) username: " with title "NetNewsWire+Pocket" default answer "" buttons {"OK"} default button 1
set pocket_user to (text returned of result)
display dialog "Enter password for " & pocket_user & " on Pocket: " with title "NetNewsWire+Pocket" default answer "" buttons {"OK"} default button 1 with hidden answer
set pocket_pass to (text returned of result)
set qpass to do shell script "/usr/bin/python -c 'import sys, urllib; print urllib.quote(sys.argv[1])' " & quoted form of pocket_pass
set auth_url to "https://readitlaterlist.com/v2/auth?username=" & pocket_user & "&password=" & qpass & "&apikey=e7dd1Ne1TfY49E1d78A573ete5g5k2c2"
set cmd to "curl '" & auth_url & "'"
set ret to do shell script (cmd)
if "200 OK" is in ret then
set cmd to "security add-internet-password -D 'Web form password' -r 'http' -a " & pocket_user & " -s getpocket.com -w " & pocket_pass & " -l 'getpocket.com (" & pocket_user & ")' -j default"
do shell script cmd
else
display dialog "Failed to authenticate user '" & pocket_user & "' on getpocket.com (" & ret & "). Please retry." with title "NetNewsWire+Pocket" buttons {"OK"}
return
end if
else
set pocket_pass to do shell script "security find-internet-password -s getpocket.com -g 2>&1 >/dev/null | cut -d '\"' -f2"
end if
set qurl to do shell script "/usr/bin/python -c 'import sys, urllib; print urllib.quote(sys.argv[1])' " & quoted form of feed_url
set qtitle to do shell script "/usr/bin/python -c 'import sys, urllib; print urllib.quote(sys.argv[1])' " & quoted form of feed_title
set qpass to do shell script "/usr/bin/python -c 'import sys, urllib; print urllib.quote(sys.argv[1])' " & quoted form of pocket_pass
set pocket_url to "https://readitlaterlist.com/v2/add?username=" & pocket_user & "&password=" & qpass & "&apikey=e7dd1Ne1TfY49E1d78A573ete5g5k2c2&url=" & qurl & "&title=" & qtitle
set cmd to "curl '" & pocket_url & "'"
set ret to do shell script (cmd)
if "200 OK" is in ret then
tell application "GrowlHelperApp"
notify with name "Success Notification" title " Added to Pocket" description feed_title & " (" & feed_url & ")" application name "NetNewsWire+Pocket"
end tell
else
tell application "GrowlHelperApp"
notify with name "Error Notification" title "Can't Add to Pocket" description feed_title & " (" & feed_url & ")" application name "NetNewsWire+Pocket"
end tell
end if
end tell