LoginSignup
13
14

コンソールを使って指定のチャットワーク部屋のメッセージをすべて取得する。

Last updated at Posted at 2020-03-06

これはなに?

チャットワークの部屋のログをすべて取得できるスクリプトの紹介です。

モチベーション

チャットワークのログをテキストデータとして取得できないかという相談がありました。

チャットワークの 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 のデベロッパーツールの中の機能、コンソールを利用します。ほかのブラウザにも同等の機能があるので読み替えてください。

image1.png

image2.png

約 400 件のメッセージごとに1秒かかるようにしています。

どんな結果が来るの?

コンソールにすべてのメッセージがテキストとして出力されます。コピーボタンをクリックすればコピーできます。

image3.png

実績は?

約3万件のメッセージがある bot 部屋(ニュースを流し続けていた部屋)のログをすべて収集できました。テキストで約 60[MB] でしたが、問題なくテキストエディタへコピペできました。

参考

ChatWorkからファイルも含めてログをエクスポートしたいならgoodbye_chatworkだ!KDDI ChatWork対応
https://qiita.com/hirokishirai/items/29bfdfc6d61b911aacc1

追記

この記事のコメントに、より高機能と思われるスクリプトを書いていただきました。
ご確認の上、利用を検討してよさそうです。

13
14
7

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
14