Skip to content
Simple, maintained CLI interface to the Pinboard.in API.
Branch: Master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore
COPYING.text
README.markdown
package.json
pin-cushion

README.markdown

pin-cushion Maintenance status: Last active in 2018Versions & releasespin-cushion on the NPM registryOpen-source licensing detailsChat on FreenodeTwitter followers

A simple command-line [Pinboard.in][] client:

pin-cushion [verb] [arguments]
pin-cushion posts/recent
pin-cushion posts/suggest --url "http://www.ponylang.org"

pb-rename() {
   pin-cushion tags/rename --old "$1" --new "$2"
}

You get the idea. To use it, you must first record [your authentication token][auth] for the API:

npm install -g pin-cushion
pin-cushion --auth elliottcable:DEADBEEF1234567890

This only provides abstracted access to the Pinboard API as defined on their site:

https://pinboard.in/api

Any Pinboard API method described there may be passed as the verb; and all described arguments are accepted as command-line flags. These are not stored in this library; as your command-line instructions are simply converted directly to API calls; so this tool probably doesn't need much in the form of maintenance. :P

[Pinboard.in]: <https://pinboard.in/ [auth]: https://pinboard.in/settings/password

Piping and JSON output

If not explicitly passed a --format parameter, then pin-cushion will spit out a formatted object-description of the response, intended for human consumption. If a format is explicitly provided, then the response from the server will be printed, unmodified; this is particularly useful with the jq command-line JSON manipulation tool:

pin-cushion posts/recent --format=json | jq                      # Simply pretty-print
pin-cushion posts/recent --format=json | jq '.posts[] | .href'   # Extract URLs of recent pins

This obviously lends itself to constructing complex shell pipes. Personally, I suggest aliasing this:

pc() { pin-cushion "$1" --format=json "$@" ;}
You can’t perform that action at this time.