iyuichiの私的開発ログ

渋谷で働くWebエンジニアのログ. Java, Android, iOS, Docker, GCP, AWS, ゲーム開発

slackのメッセージをエクスポートしてMongoDBに入れてみる

Slackはメッセージのエクスポートができます。
できるのは、Team OwnerかAdminのユーザです。

ただ、フリープランで利用している場合には、private channelやdirect messageはエクスポートデータには含まれません。
公開されているチャンネルが対象となります。ちょっとだけ残念。

詳細はこの辺を参照
Understanding Slack data exports – Slack Help Center

では早速エクスポートをしてみます。
https://my.slack.com/services/export
f:id:iyuichi:20151201201237p:plain

start exportをするとzipファイルでデータがDLできます。
回答すると、チャンネル毎のディレクトリに日付毎に分割されたjsonファイルが入っています。

それをMongoDBに入れてローカルで検索できるようにしてみました。


slackからexportしたデータをMongoDBに取り込む

BASE_DIR はDLしたデータを置いているディレクトリです。
slack_dataというDBをMongoDB上に作ってデータを保存するようになっています。
collectionはチャンネル毎(ディレクトリ毎)に作成されます。
同じデータは取り込まないようにupsert=Trueで登録しています。
exclude_filesは、DLしてきたディレクトリ内で取り込まなくてよさそうなファイルを指定しています。
exclude_post_typeは取り込む必要がなさそうなsubtypeを記載しています。好みで変更してもらって良いかと思います。
各メッセージのデータにはユーザIDしか入っていなくてユーザ名がuser.jsonのデータと結合しないとわからないのが不便なのでロジックの中でidからユーザ名を取得するようにしています。
少し加工していたりするのでrawというキーで生データも登録しています。
単純にjsonオフジェクトをMongoに入れるだけならもう少し簡単な処理になります。。。

こんな感じで取り込んでおいたら、検索したりちょっとした分析とかできないかなあと思って作ってみました!