note 毎日更新してます

slackのファイルを一括ダウンロードするためのスクリプト

今までファイルは全部slackで共有していたのですが、ストックさせたい物に関して使い勝手がよくなかったのでgoogle driveに移行しようという話になりました。

そのためにslackのファイルをダウンロードし直す必要があるのですが、そのままだとひとつずつしかできなくて不便だったので何かないかと調べたところこんなのが見つかりました。

https://qiita.com/yuma1217/items/86cf9d852a2b83fa7296

これを試したところ、僕の環境ではうまく作動しなかったので改変を加えたのを紹介します。

slack-download.py
import requests
import json
import os.path

def fileDownload():
    print('fileDownloading...')
    # レガシートークン( 参考:https://api.slack.com/custom-integrations/legacy-tokens )
    LEGACYTOKEN = "ここにいれてね"

    # UnixTimeで記述, 入れなければ全期間( 参考:https://tool.konisimple.net/date/unixtime )
    DATE_FROM = ""
    DATE_TO = ""

    url = "https://slack.com/api/files.list?token=" + LEGACYTOKEN + "&ts_from=" + DATE_FROM + "&ts_to=" + DATE_TO + "&pretty=1"

    result = requests.get(url)

    data = json.loads(result.text)

    # ファイルをダウンロードするためのヘッダー
    headers = {'Authorization': 'Bearer ' + LEGACYTOKEN}
    count = 0
    for file in data["files"]:
        file_name = file["name"]
        if not "url_private_download" in file:
            continue
        file_url = file["url_private_download"]
        # 同じファイル名の物があると上書きされてしまうため存在を確認する
        if os.path.exists(file_name):
            print("重複しました")
            count = count + 1
            insert_point = file_name.find(".")
            insert_string = "(" + str(count) + ")"
            file_name = '{0}{1}{2}'.format(file_name[:insert_point], insert_string, file_name[insert_point:])
        response = requests.get(file_url, headers=headers)
        with open(file_name, 'wb') as f:
            # ファイルを保存する
            f.write(response.content)

if __name__ == '__main__':
    fileDownload()

使い方

macでの使い方を説明します。windowsの方はターミナルの部分をコマンドラインなどで置き換えて読んでください。

STEP.1
レガシートークンの取得
まずはslackからレガシートークンを発行しましょう。
https://api.slack.com/custom-integrations/legacy-tokens
こちらのページから、下の方にワークスペース名が並んだ項目があると思います。その右側にCreate tokenというボタン(またはRe-issue token)があるので、それを押すとToken欄にトークンが発行されます。
そのトークンをコピーしておいてください。
注意
このトークンはいわゆるパスワードのようなものなので他の人には絶対に教えてはいけません。また、レガシートークンを扱うのはslackとしても推奨されない方法ですので、使用される場合は自己責任でお願いします。
STEP.2
.pyファイルの作成
上にあるコードはpythonという言語で書かれています。テキストエディターなどで、上のコードをコピペします。そのときLEGACYTOKENと書かれた場所にさっきコピーしておいたあなたのトークンを貼り付けてください。
また、スラックから保存したいファイルを日付で指定したい場合は、DATE_FROMとDATE_TOにUnixTimeで日時を記入してください。( 参考ツール:https://tool.konisimple.net/date/unixtime )
保存するときは名前を「slack-download.py」とでもしておいてください。
STEP.3
フォルダの作成
このスクリプトは、保存したファイルを同じディレクトリーに展開するので、先ほど作ったslack-download.pyを適当にdesktop/saveフォルダみたいなのを作ってその中に入れてください。
STEP.4
ターミナルより作動
ターミナルを開いて、さっき保存したディレクトリーに移ります(cd Desktop/saveとコマンドを入力してエンターキーを押してください)。
そして、python slask-download.pyと入力、エンターキーでダウンロードが始まるはずです。

pythonについてよくわかんないよ!って方は、別途調べて勉強してみましょう。

お疲れ様でした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です