見出し画像

コメントをくれた、お友だちリスト

ひさびさのつくってみたシリーズ第4段。コメントをくれたお友だちをリスト表示するツールを作ってみました。過去記事にコメントくれたユーザをコメント数が多い順に集計します。自分のユーザIDを入力すると直近の記事から集計して多い順に50名まで表示します。

以前はよくコメントくれてたのに、最近音沙汰なくなっちゃったな、、、元気にしてるかな、みたいのを知りたくて作ったツールです。

詳しくみるをクリックすると、過去どんな記事にコメントくれていたのかの内訳をみることができます。ユーザ軸で過去にどんな会話をしていたかがリスト化できるツールは他にないので、やってみると意外と気づきがあって楽しいです。

note側にあまり負荷をかけないように制限をかけているので応答にそこそこ時間がかかります。データ取得に失敗した場合でも自動的に再取得にいくような処理は入れてないのと、特に今回は連続して複数種類のデータを一括取得しにいってるので、取得に失敗するケースがまぁまぁあるかと思います。そんなときは、時間をおいてやり直してみてください。

連休中にヒマで趣味で作ったものなので、動作不備などは多目にに見てください。動作確認もざっとChromeとSafariくらいでしかしてませんので、ブラウザによっては上手く動かないかも!?(汗)お遊び感覚で使ってくださいませ。



ここからは、あんまり興味ないかもしれないですが、コメント一覧を取ってくる方法(API)を備忘のために残しておきます。

記事一覧の取得API

https://note.com/api/v2/creators/{ユーザID}/contents?kind=note&disabled_pinned=true&page={ページ数}

ユーザIDとページ数を指定すると、指定したユーザの記事が最新のものから順に取得できます。以下のようなJSON形式のデータが取得(1ページあたり6記事分が返ってくる)できるので、最終ページを示すフラグ(data.isLastPage)にtrueが返されるまで「ページ数」を1から順にカウントアップして取得していきます。※取得できるのは公開済みの記事のみです。

返されたJSONを見ると各記事には「コンテンツID」(data.contents.id)という数値のIDが割り当てられています。この「コンテンツID」を元に次のAPIを使って各記事に付いたコメント情報を取得していきます。

コメント一覧の取得API

https://note.com/api/v1/note/{コンテンツID}/comments[?max_id={コメントID}]

記事一覧で取得した「コンテンツID」を指定することで、コメント情報を取得するAPIです。記事毎にコメントの一覧が返ってきます。

コメント情報は一回のリクエストで50件まで取ってこれます。ひとつの記事に50件以上のコメントがついている場合は、data.rest_comment_countに残りのコメント数が返されます。例えば、60件コメントがある記事の場合、初回の取得で10という数値が返ってくるはずです。つまり、50件のデータが取得できていて、残りが10件あるよ、ということです。続いてmax_idに取得済みのコメントIDのうち一番値の大きなものを指定すると、その次のコメントIDからコメントを追加取得することができるので、data.rest_comment_countが0になるまで再帰的に取得します。

これを全てのコンテンツIDで繰り返せば、全てのコメント一覧を取得することができます。(今回のツールでは負荷軽減のため、コンテンツIDの取得を最大240までという制限をいれています。)あとは、これらのデータを用途に応じて(ランキング形式に集計するなど)整形すれば良いかと思います。

例えば、これをそのままスプレッドシートなどに展開すれば全コメントを一覧することもできます。実際に個人的にたまに使っているツールですが、noteって表示名を自由に変えられるので、以前の名前と変わっちゃってるけど誰だったけーーー??みたいなときに、ユーザIDで過去のコメントを検索できると、あーー!!そうだ、こんなやりとりしてた、なんて思い出したりできて便利です。

全コメントを一覧する

はやくバックアップツールが実装されるといいんですけどね。。。もうしばらくは、こういった全体の情報を管理するためには力技でなんとかしないといけなそうです。




こちらの記事も

ツールを紹介していただきました!結果をJSONで吐き出して分析に使ったり、過去のお友だちとのウキウキ交流を深めたり、いろいろに使っていただけて嬉しいです!!


この記事が気に入ったらサポートをしてみませんか?