これはなに?
チャットワークの部屋のログをすべて取得できるスクリプトの紹介です。
モチベーション
チャットワークのログをテキストデータとして取得できないかという相談がありました。
チャットワークの API だと最新100件までしか取得できないため、なんとかできないか試行錯誤しました。
https://developer.chatwork.com/ja/endpoint_rooms.html#GET-rooms-room_id-messages
同じ目的のものとして goodbye_chatwork があったが、自分のログイン方法が SSO だったためか、issue があった reCAPTCHA の影響か 、直接は利用できなかった。スクリプトを参考にした。
スクリプトは?
以下の gist に上げています。
コンソールを使って指定のチャットワーク部屋のメッセージをすべて取得する。
https://gist.github.com/junjanjon/8ce62c1cb90e817b1247de672bf93116
以下の3行だけ書き換えればどの部屋でも利用できます。
// 取得したいチャットルームの最新のチャット ID
var target_chat_id = 1274532567885807616;
// 取得したいチャットルームのルーム ID
var target_room_id = 12345678;
// 最大再帰回数. 1回のリクエストにつき40件取得しています. 最後までいったら自動で完了するため本番時は10000程度の大きな値を指定していいです.
var LIMIT_COUNT = 3;
どうやって使うの?
Google Chrome のデベロッパーツールの中の機能、コンソールを利用します。ほかのブラウザにも同等の機能があるので読み替えてください。
約 400 件のメッセージごとに1秒かかるようにしています。
どんな結果が来るの?
コンソールにすべてのメッセージがテキストとして出力されます。コピーボタンをクリックすればコピーできます。
実績は?
約3万件のメッセージがある bot 部屋(ニュースを流し続けていた部屋)のログをすべて収集できました。テキストで約 60[MB] でしたが、問題なくテキストエディタへコピペできました。
参考
ChatWorkからファイルも含めてログをエクスポートしたいならgoodbye_chatworkだ!KDDI ChatWork対応
https://qiita.com/hirokishirai/items/29bfdfc6d61b911aacc1
追記
この記事のコメントに、より高機能と思われるスクリプトを書いていただきました。
ご確認の上、利用を検討してよさそうです。