Mattermost APIを使って投稿の検索結果をファイル出力する
はじめに
私のプロジェクトでは、日報代わりに一人ふりかえりとしてMattermostにYWT(やったこと・わかったこと・つぎやること)を投稿し、メンバー内で共有しています。
日報を書き始めて半年以上が経ち、自身の投稿をまとめておきたいと思い、MattermostAPIを使ってファイル出力してみました。
使用するツール
動作確認環境 | バージョン |
---|---|
Windows10 Home Edition | バージョン2004 |
Docker for Windows | 2.4.0.0 |
GitLab | 13.4.3 |
GitLab Mattermost | 5.26.2 |
Python | 3.8 |
MattermostDriver | 6.3 |
GitLab Mattermostは前回(https://qiita.com/shimi58/items/0e9b81f2eac8993be71b)で構築済みのものを使用しています。
動くもの
GitHubに登録しています。
使い方
-
mattermostdriverをインストール
-
powerShellまたはコマンドプロンプトで実行
pip install mattermostdriver
-
-
config.iniを開き、接続先、ログイン情報、検索条件を指定
config.ini[CONNECTION] # MattermostのURLを指定 scheme = http url = localhost port = 9081 # APIでサインインするユーザーを指定 login_id = test password = Password1! [SEARCH] # 検索対象のチーム名を指定 team_name = sample # 検索条件を指定 tearms = #XXXXXXX [OUTPUT] path = ./mattermostPost.txt
-
mattermost.pyを実行する
python mattermost.py
作ったもの
ソースコートです。
from mattermostdriver import Driver
import configparser
# 定義読み込み
config_ini = configparser.ConfigParser()
config_ini.read('config.ini', encoding='utf-8')
# Mattermostログイン
connection = Driver({
'url': config_ini['CONNECTION']['url'],
'login_id': config_ini['CONNECTION']['login_id'],
'password': config_ini['CONNECTION']['password'],
'scheme': config_ini['CONNECTION']['scheme'],
'basepath': '/api/v4',
'verify': True,
'port': int(config_ini['CONNECTION']['port']),
})
connection.login()
# チーム名からTeam IDを取得
teamId = connection.api['teams'].get_team_by_name(config_ini['SEARCH']['team_name'])['id']
# 検索条件に合致する投稿を取得
postMessage = connection.api['posts'].search_for_team_posts(teamId,options={
'terms': config_ini['SEARCH']['tearms']
})
#ファイルオープン
with open(config_ini['OUTPUT']['path'], 'w') as f:
#検索結果を出力
for post in postMessage['posts'].values():
print(post['message'], file=f)
#区切り文字
print('====================', file=f)
参考にしたもの
-
MattermostDriverの公式ドキュメント
こちらに接続方法が書いており、ほぼその通りで接続ができました。
また、EndPointsに各APIの引数の情報も書いています。 -
MattermostAPIの公式ドキュメント
APIでどのような操作ができるかが記載しています。(当然といえば当然。。)
さいごに
MattermostAPIは使用できるAPIも豊富でドキュメントの記載も厚く、特に詰まることなく作れました。
Mattermost自体の検索がイマイチなので、後々抽出した投稿はハッシュタグなんかをつけておくルールにすると、運用しやすいかと。
次は、Botなんかも作ってみたいなぁと思っています。