14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

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

使い方

以下を書き換えればどの部屋でも利用できます。

// 取得したいチャットルームのルームID。先頭のridを除いた数字のみ。
// [] を指定すると、アクセスできる全ルームの情報をダウンロードします。
var TARGET_ROOM_IDS = []
// var TARGET_ROOM_IDS = [123456789, 987654321]

// 取得したくないチャットルームのルームID。
// ログ用ルーム等のダウンロードを除外するのに利用します
var EXCEPT_ROOM_IDS = []
// var EXCEPT_ROOM_IDS = [123456789]

// 通信間隔[ミリ秒]。ダウンロードするデータの規模が大きい場合は、1000(1秒)ぐらいに指定してください。
var INTERVAL_TIME = 300;

// チャットワークのホスト. 企業用の場合は適宜修正ください
var HOST_URL = "www.chatwork.com"
// var HOST_URL = "kcw.kddi.ne.jp"

どうやって使うの?

Google Chrome のデベロッパーツールの中の機能、コンソールを利用します。ほかのブラウザにも同等の機能があるので読み替えてください。

image1.png

image2.png

20件のメッセージごとにINTERVAL_TIME[ms]待ちます。

どんな結果が来るの?

ダウンロードディレクトリに {部屋ID}_messages.json がダウンロードされます。

ダウンロードディレクトリに添付ファイルが {部屋ID}_{ファイル名} でダウンロードされます。

_messages.json の内容について

最上位が配列のデータです。配列内の各要素がメッセージです。

普通のテキストメッセージの例を以下に表します。

[
  ...,
  {
    "id": "123451234512345",
    # ユーザID
    "aid": 1234567,
    # メッセージ内容
    "msg": "Hello World",
    # メッセージタイプ: テキストメッセージ、部屋作成、部屋参加、アップロードなどがある
    "type": "text_message_type",
    "tm": 1234567,
    "utm": 0,
    # 部屋内のメッセージのインクリメントの値
    "index": 12,
    # リアクション: 絵文字とリアクションしたユーザIDが記録される
    "reactions": [],
    # 投稿時間
    "datetime": "2024/12/12 12:12:12",
    # ユーザ名
    "aid_name": "田中太郎"
  },

実績は?

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

注意

攻撃のようなリクエストにならないよう注意してください。

開発者コンソールは強力なことができてしまうため注意してください。

追記(2025/2/4)

この記事のコメントにさらに高機能なスクリプトを書いていただき、動作確認したため gist と記事にも反映させていただきました。
ありがとうございます!

14
15
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
14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?