📌

Mattermost 投稿内容の出力

2022/10/10に公開約3,600字

Mattermostの投稿内容を解析したくなったのでコマンドでの出力方法を確認しました。

なお、以下の例ではいずれもmmctlをaliases設定して短く表現しています。

# mmctlを使いやすくするためのおまじない
alias mmctl="sudo -u mattermost mmctl --local"

参考:公式ページ
https://docs.mattermost.com/manage/mmctl-command-line-tool.html#mmctl-post

投稿内容をリスト化する

mmctl post list では、様々な形で出力することができます。
本記事では、実際に使ってみたらどのように出力されるかを紹介します。

コマンドの形式

flagsにいろいろ指定することで出力内容を変えることができます。

mmctl post list [flags]

デフォルトでは20メッセージまで出るようです。

-f, --follow         チャンネルに新しいメッセージが投稿されたときに、追加されたデータを出力します。
-h, --help           ヘルプ
-n, --number int     リストアップするメッセージの数 (default 20)
-i, --show-ids       投稿IDを表示する
-s, --since string   一定時間以降に投稿されたメッセージを一覧表示する (ISO 8601)

オプションの内容

--config string                設定ファイルへのパス (default "$XDG_CONFIG_HOME/mmctl/config")
--disable-pager                ページ出力を無効にする
--insecure-sha1-intermediate   SHA-1などの安全でないTLSプロトコルを使用することができます。
--insecure-tls-version         TLSバージョン1.0と1.1を使用可能
--json                         出力をjson形式にする
--local                        unixのソケットを通してサーバと通信することができます。
--quiet                        mmctl がコマンドの出力を生成しないようにします。
--strict                       mmctl のバージョンがサーバのものと一致する場合のみ、コマンドを実行します。
--suppress-warnings            警告メッセージの出力を無効にする

実際に使ってみた

DefaultチームのTown-Squareチャンネルに以下のようなコメントがされた状態でコマンドを実行してみます。
投稿状態サンプル

オプション指定なし

まずはプレーンな形で実行してみました。
チーム名とチャンネル名を:(コロン)でつなげて指定します。
default:town-square

bitnami@debian:~/mmdata$ mmctl post list default:town-square
[user] user joined the team.
[user] aaa
[user] にほんごです
[user] このコメントは
改行が入っています

There are 4 posts on local instance

この状態から、コメントaaaの削除をしてみます。
コマンドをdeleteする機能は実装されてないようなので、画面から操作します。
(操作内容は割愛)

bitnami@debian:~/mmdata$ mmctl post list default:town-square
[user] user joined the team.
[user] にほんごです
[user] このコメントは
改行が入っています

There are 3 posts on local instance

listコマンドでも削除されたコメントは表示されなくなりました。

投稿idつきで出力

26桁のID付きで出力されます。このIDはコメントリンクの末尾のものと一緒です。
にほんごですというコメントにアクセスする場合は以下のようになりますね。
https://localhost:20443/default/pl/nzmis6q37ins38j3xaem8gwy9y

bitnami@debian:~/mmdata$ mmctl post list -i default:town-square
96mm1z3wutyktxiiba7bcwj7ew [user] user joined the team.
nzmis6q37ins38j3xaem8gwy9y [user] にほんごです
ee83rih8xtymbei7g791t47uqr [user] このコメントは
改行が入っています

There are 3 posts on local instance

json形式で出力

標準の出力の形だと、だれがいつ投稿したのかわからないのですがjson形式にするとこれもわかるようになります。最後のコメントだけをjson形式で出力してみました。

bitnami@debian:~/mmdata$ mmctl post list default:town-square --json -n 1
{
  "id": "ee83rih8xtymbei7g791t47uqr",
  "create_at": 1665366376229,
  "update_at": 1665366392001,
  "edit_at": 1665366391999,
  "delete_at": 0,
  "is_pinned": false,
  "user_id": "5tt8cwot6fdojqjtuxa3xcjgbo",
  "channel_id": "bmno7y7ztjft3m9q4t4onw77hh",
  "root_id": "",
  "original_id": "",
  "message": "このコメントは\n改行が入っています",
  "type": "",
  "props": {
    "disable_group_highlight": true
  },
  "hashtags": "",
  "pending_post_id": "",
  "reply_count": 0,
  "last_reply_at": 0,
  "participants": null,
  "metadata": {}
}

There are 1 posts on local instance

"create_at" 等の時刻はUNIX時間(ミリ秒)です。
※ピリオドを補完して1665366376.229を変換すると2022年10月10日 10:46:16 になります。

bitnami@debian:~/mmdata$ awk 'BEGIN{print strftime("%c",1665366376.229);exit}'
Mon Oct 10 10:46:16 2022

出力数を増やす

デフォルトだと20投稿分しか表示されません。活発なチャンネルであればもっと必要になるので、もっと多く必要な場合は-nで数を指定します。

500個出力する場合の例

bitnami@debian:~/mmdata$ mmctl post list reiciendis-0:doloremque-0 --json -n 500 > reiciendis-0_doloremque-0_20221010.json
There are 153 posts on local instance

終わりに

以上でmmctl post listに関する確認結果は終わりです。
次はこの結果を使った投稿解析のスクリプトを作ってみようと思います。

Discussion

ログインするとコメントできます