Kinopio JSON text tricks

on Ben’s Blog

I realize this is super-niche information, but I've been lightly playing around with the Kinopio API and the JSON it returns. You'll need curl, jq, and rg.

Here's the shell incantation for getting a list of cards in a list sorted in created order:

1export KINOPIO_API_KEY=<enter `JSON.parse(localStorage.user).apiKey` in console>
2export KINOPIO_SPACE_KEY=<grab from URL>
4curl -H "Authorization: $KINOPIO_API_KEY"$KINOPIO_SPACE_KEY | jq -r  '.cards | .[] | .createdAt + "\t" + (.name | tojson)' | sort

The jq part is the more interesting stuff:

1cat space.json | jq -r  '.cards | .[] | .createdAt + "\t" + (.name | tojson)'

It grabs all the cards, then prints out the created time, a tab, and the escaped card name.

This is just text now, so you can do Unix-style filtering and manipulations. For example, list all the incomplete tasks by piping through rg:

1cat space.json | jq -r  '.cards | .[] | .createdAt + "\t" + (.name | tojson)' | rg "\"\[\]"

I've formatted it to kinda look like a twtxt feed. So for example, here are the incomplete tasks on the Kinopio roadmap. Since it's public, I don't need the API key:

1% curl -s | jq -r  '.cards | .[] | .createdAt + "\t" + (.name | tojson)' | sort | rg "\"\[\]"
22019-12-31T16:19:09.398Z	"[] for power users - may need to prioritize features that get new people in before these"
32019-12-31T16:19:09.412Z	"[] Dark mode πŸŒ™"
42020-01-02T02:19:46.881Z	"[] two new frames"
52020-05-25T14:59:23.876Z	"[] Better undo (Cmd z to undo Any operation, not just card delete)"
62020-06-15T15:12:20.886Z	"[] bi-directional tabs/labels that allow bottom up organization \n\nSpec:"
72020-08-11T14:56:21.976Z	"[] marketing outreach"