Posted at

Slackで投稿したファイルを保存したい

More than 1 year has passed since last update.


概要


  • Slackで毎日挙げているファイルがあり、それを全部読みたいと思った

  • しかも月別にまとめたい

  • 検索でも出来るが一々ダウンロードするのが面倒

  • 楽に、早く作る必要があった(1時間以内)

  • 全然汎用的じゃないですが、何かの役に立てば幸いです!


使うもの


方法


SlackのLegacyTokenを取得する


  • あまりおすすめされていないけど、自分だけで利用するなら楽

  • GitHubなどにあげないように注意


TestページでAPIを叩いてリクエストとレスポンスを確認する



  • ts_from, ts_toで期間を指定(UnixTime)

  • レスポンスのurl_private_downloadを取得し、こちらにアクセスするとファイルをダウンロードできる


コード

import requests

import json
import os.path

def fileDownload():
print('fileDownload')

# 大文字の所は自分の欲しいファイルなどに変換
# ts_from, ts_toなどはUnixTimeで記述
url = "https://slack.com/api/files.list?token=LEGACYTOKEN&channel=CHANNELID&ts_from=1535727600&ts_to=1538319600&user=USERID&pretty=1"

result = requests.get(url)

data = json.loads(result.text)

# ファイルをダウンロードするためにヘッダーが必要
headers = {'Authorization': 'Bearer '+LEGACYTOKEN}
count = 0
for file in data["files"]:
file_url = file["url_private_download"]
file_title = file["title"]

# 同じファイル名の物があると上書きされてしまうため存在を確認する
if os.path.exists(file_title):
print("重複しました")
count = count + 1
file_title = file_title + str(count)
response = requests.get(file_url, headers=headers)
with open(file_title, 'wb') as f:
# ファイルを保存する
f.write(response.content)

if __name__ == '__main__':
fileDownload()


  • 最後にこのファイルをpython ファイル名で叩くだけです

  • お役に立てたら幸いです