Need help with pin-cushion?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

ELLIOTTCABLE
129 Stars 3 Forks ISC License 14 Commits 4 Opened issues

Description

Simple, maintained CLI interface to the Pinboard.in API.

Services available

!
?

Need anything else?

Contributors list

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

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 "[email protected]" ;}

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.