sgotand / slack-export

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Slack Export

Slack のチャンネルから全メッセージをダウンロードするスクリプトです。 対象範囲は、パブリックチャンネル、プライベートチャンネル、複数人のダイレクトメッセージ、ダイレクトメッセージです。 ただし実行したユーザーが閲覧権限を持っているものに限ります。

動作環境

  • Python: 3.9.13
  • requests: 2.28.1

OAuth トークンの入手

Slack Web API を実行するために、Slack App を作成して OAuth トークンを入手します。

  1. Slack App を作成する。App の作成ページを開き、Create New App を押す。

Create New App

  1. From an app manifest を選択し、manifest.yaml の内容を貼り付けて、あとは指示通り進む。

From an app manifest

Paste manifest

  1. 作成した App の Basic Information ページで Install to Workspace を押し、インストール先のワークスペースを選択する。

Install to Workspace

  1. OAuth & Permissions ページの User OAuth Token を控えておく。

User OAuth Token

使い方

slack_export.py を以下のように実行します。 token パラメータには、先ほど入手したトークンを指定してください。 以下の例では、実行するとカレントディレクトリに output ディレクトリが作成され、その中にチャンネルごとに JSON 形式で保存されます。

$ python slack_export.py \
    --token xxxxx \
    --output-dir output
INFO:__main__:Fetching users
INFO:__main__:xxx users fetched
INFO:__main__:Fetching channels
INFO:__main__:xxx channels fetched
INFO:__main__:Fetching messages: channel_name='xxxxx'
INFO:__main__:xxx messages/replies fetched
...

NDJSON 形式で出力したい場合は --output-format jsonl オプションを追加してください。

python slack_export.py \
    --token xxxxx \
    --output-dir output \
    --output-format jsonl

出力ファイルの例

$ head -n 10 output/random.json
[
    {
        "subtype": "channel_join",
        "text": "<@UXXXXXXXXXX>さんがチャンネルに参加しました",
        "ts": "0000000000.000000",
        "type": "message",
        "user": "UXXXXXXXXXX"
    },
    ...

About


Languages

Language:Python 100.0%