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:
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
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 "$@" ;}