1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Mattermost APIを使って投稿の検索結果をファイル出力する

Last updated at Posted at 2020-10-24

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に登録しています。

使い方

  1. mattermostdriverをインストール

    • powerShellまたはコマンドプロンプトで実行

      pip install mattermostdriver
      
  2. 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
    
  3. 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)

参考にしたもの

さいごに

MattermostAPIは使用できるAPIも豊富でドキュメントの記載も厚く、特に詰まることなく作れました。
Mattermost自体の検索がイマイチなので、後々抽出した投稿はハッシュタグなんかをつけておくルールにすると、運用しやすいかと。
次は、Botなんかも作ってみたいなぁと思っています。

1
2
0

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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?