Mattermost 投稿内容の出力
Mattermostの投稿内容を解析したくなったのでコマンドでの出力方法を確認しました。
なお、以下の例ではいずれもmmctlをaliases設定して短く表現しています。
# mmctlを使いやすくするためのおまじない
alias mmctl="sudo -u mattermost mmctl --local"
参考:公式ページ
投稿内容をリスト化する
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