はじめに
使い方を公式で説明しているわけではないが、noteにはAPIがあるみたい。
curlコマンドの使い方を学ぶついでに、noteに投稿されている記事のタイトルを取得してみる。
curlコマンドとjqコマンド
$ curl --version
curl 7.64.1
$ jq --version
jq-1.6
curlコマンドでnoteの、特定ユーザの記事タイトルを取得してみる
$ curl https://note.com/api/v2/creators/kypowder/contents\?kind=note\&page=1
?と&をエスケープするため、\を入れている。
{"data":{"contents":[{"id":24798670,"type":"TextNote","status":"published","name":"テストタイトル2","description":null,"price":0,"key":"n4551d7093a0b","slug":"slug-n4551d7093a0b","publishAt":"2020/12/17 13:17","thumbnailExternalUrl":"","eyecatch":null,"user":{"id":3414203,"name":"こな","urlname":"kypowder","nickname":"こな","userProfileImagePath":"https://assets.st-note.com/production/uploads/images/31550000/profile_f1ad3c646727d3424b996812d90901f0.jpg?fit=bounds\u0026format=jpeg\u0026quality=45\u0026width=330","customDomain":null,"disableSupport":false,"likeAppealText":null,"likeAppealImage":null,"purchaseAppealTextNote":null,"twitterNickname":"YoKaU2"},"canRead":true,"isAuthor":false,......
見やすくするためにjqコマンドをパイプでつなげる。
$ curl https://note.com/api/v2/creators/kypowder/contents\?kind=note\&page=1 | jq
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 4473 0 4473 0 0 20612 0 --:--:-- --:--:-- --:--:-- 20612
↑ 最初の数行に表示される転送情報をスキップしたい場合、-sオプションを追加する。
しかし、エラー情報まで消えてしまうので、-Sも追加しとく。
$ curl -Ss https://note.com/api/v2/creators/kypowder/contents\?kind=note\&page=1 | jq
オブジェクトの部分抽出
$ curl -Ss https://note.com/api/v2/creators/kypowder/contents\?kind=note\&page=1 | jq ".data"
data{
}
の中を抽出できた。
配列を抽出する場合、
$ curl -Ss https://note.com/api/v2/creators/kypowder/contents\?kind=note\&page=1 | jq ".data | .contents"
とすることで
配列に対して、.xxは適応できないので、.[]を使う。
$ curl -Ss https://note.com/api/v2/creators/kypowder/contents\?kind=note\&page=1 | jq ".data | .contents[]"
一番外側にある配列を除去してくれる。
.contents | .[]としなくても.contents[]で繋げられる。
".data.contents[]"でもいける。
$ curl -Ss https://note.com/api/v2/creators/kypowder/contents\?kind=note\&page=1 | jq ".data | .contents[] | .name"
オブジェクトになったので.xxで指定することで、
投稿記事のタイトルのみを抽出できた。
これをさらに整形することもでき、
$ curl -Ss https://note.com/api/v2/creators/kypowder/contents\?kind=note\&page=1 | jq "{title: [.data | .contents[].name]}"
とすることで、
いい感じに作り直すこともできる。