本記事は、PythonでSlackからファイルをダウンロードする方法について紹介する記事です。
具体的には以下の通り。
・Python+requestでSlackからファイルをダウンロードする方法
・Python+requestのファイルダウンロード実装例
「slacker」ライブラリではファイルのダウンロードができないようなので、requestライブラリでの実装方法を紹介します。
目次
Python+requestでSlackからファイルをダウンロードする方法
SlackからPythonでファイルをダウンロードする方法はいくつかありますが、今回は「requests」ライブラリを使用してダウンロードする方法を紹介します。
requestsライブラリでSlackからファイルをダウンロードする
SlackからファイルをダウンロードするためにはAPIトークンの取得が必要です。
手順は以下の通りです。
1.Slackのappページに移動
2.Hubotで検索
3.Hubotをインストールする
4.Hubotの詳細を開いてAPIトークンの欄を確認する
手順の4で確認したAPIトークンを実装の時に使用します。
詳細の方法については「SlackbotのAPIトークンを取得する(動画あり)〜Hubotのインストール〜」をお読みください。
取得したAPIトークンは「headers」の「Authorization」に指定します。
続いてダウンロードしたファイルのURLを調べましょう。
Slackで対象ファイルのメニューを開いて「ファイルのリンクをコピー」をクリックすることでURLをコピーできます。
◆記述例
1 2 3 4 5 6 7 | requests.get( # ダウンロードURLを指定 'https://xxxxxx.slack.com/files/xxxxxxx/xxxxxx/test.txt', allow_redirects=True, # headersにAPIトークンを指定する headers={'Authorization': 'Bearer API_TOKEN'}, stream=True ) |
ダウンロードしたファイルを保存する
requestライブラリだけではダウンロードしたファイルを保存できません。
ファイルを保存するためには、codecsなどのファイル制御ライブラリでファイルに書き込む必要があります。
◆ファイルを保存する処理の記述例
codecsなどファイル制御ライブラリを使用して書き込めば保存できます。
openのオプションは「wb(バイナリーで書き込み)」を指定します。
1 2 3 | target_file = codecs.open('保存するファイルパス', 'wb') target_file.write(content) target_file.close() |
Python+requestのファイルダウンロード実装例
ダウンロードクラスの実装例は以下の通りです。
◆ダウンロードクラスの実装例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | import requests import codecs def file_download(download_url, save_path, token): content = requests.get( download_url, allow_redirects=True, headers={'Authorization': 'Bearer %s' % token}, stream=True ).content # 保存する target_file = codecs.open(save_path, 'wb') target_file.write(content) target_file.close() def main(): # SlackのダウンロードURL file_url = "https://xxxxxx.slack.com/files/xxxxxxx/xxxxxx/test.txt" # ファイルを保存するローカルPCのパス save_path = '/Users/xxxxx/PycharmProjects/xxxxxxxx/test.txt' # APIトークン token = "API_TOKEN" # ダウンロード実行 file_download(file_url, save_path, token) if __name__ == "__main__": main() |
以上、Slackからファイルをダウンロードする方法でした。
関連記事>>【Python】slackerでファイルをアップロードする