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