如何下载由 slackbot 创建的文件?
How to download files that were created by a slackbot?
我创建了一个机器人,它从工作区中的用户那里收集信息。它将此信息存储在本地服务器上的 csv 文件中。我如何下载所述文件?我从 Stack Overflow 得到了这段代码,试图联系作者但没有得到任何回应。
import requests
url = 'https://slack-files.com/T0JU09BGC-F0UD6SJ21-a762ad74d3'
token = 'xoxp-TOKEN'
requests.get(url, headers={'Authorization': 'Bearer %s' % token})
如何获取文件的URL&token?令牌是什么?是机器人的 OAuth 令牌吗?
假设我想从 slackbot 创建的服务器下载名为 stats.csv
的文件,但我没有 URL,我该如何下载它?
我不建议将 URL 拼凑在一起以自行下载文件,因为 Slack 可能会更改它,然后您的代码就会中断。
相反,首先通过调用API方法files.info
with the file ID. Then use property url_private
as URL for download. Alternatively you can also call files.list
获取文件的当前URL,以获取具有ID及其URL的所有文件的列表.
为确保您可以访问该文件,最好使用其创建者的令牌,例如你的 slackbot.
我还包含了将下载的数据保存到文件的代码和一些基本的错误处理。请注意,将令牌设置为环境变量名称除外 SLACK_TOKEN
。这样比直接放到代码里安全多了。
这是一个完整的例子:
import os
import requests
token = os.environ['SLACK_TOKEN']
file_id = "F12345678"
# call file info to get url
url = "https://slack.com/api/files.info"
r = requests.get(url, {"token": token, "file": file_id})
r.raise_for_status
response = r.json()
assert response["ok"]
file_name = response["file"]["name"]
file_url = response["file"]["url_private"]
print("Downloaded " + file_name)
# download file
r = requests.get(file_url, headers={'Authorization': 'Bearer %s' % token})
r.raise_for_status
file_data = r.content # get binary content
# save file to disk
with open(file_name , 'w+b') as f:
f.write(bytearray(file_data))
print("Saved " + file_name + " in current folder")
我创建了一个机器人,它从工作区中的用户那里收集信息。它将此信息存储在本地服务器上的 csv 文件中。我如何下载所述文件?我从 Stack Overflow 得到了这段代码,试图联系作者但没有得到任何回应。
import requests
url = 'https://slack-files.com/T0JU09BGC-F0UD6SJ21-a762ad74d3'
token = 'xoxp-TOKEN'
requests.get(url, headers={'Authorization': 'Bearer %s' % token})
如何获取文件的URL&token?令牌是什么?是机器人的 OAuth 令牌吗?
假设我想从 slackbot 创建的服务器下载名为 stats.csv
的文件,但我没有 URL,我该如何下载它?
我不建议将 URL 拼凑在一起以自行下载文件,因为 Slack 可能会更改它,然后您的代码就会中断。
相反,首先通过调用API方法files.info
with the file ID. Then use property url_private
as URL for download. Alternatively you can also call files.list
获取文件的当前URL,以获取具有ID及其URL的所有文件的列表.
为确保您可以访问该文件,最好使用其创建者的令牌,例如你的 slackbot.
我还包含了将下载的数据保存到文件的代码和一些基本的错误处理。请注意,将令牌设置为环境变量名称除外 SLACK_TOKEN
。这样比直接放到代码里安全多了。
这是一个完整的例子:
import os
import requests
token = os.environ['SLACK_TOKEN']
file_id = "F12345678"
# call file info to get url
url = "https://slack.com/api/files.info"
r = requests.get(url, {"token": token, "file": file_id})
r.raise_for_status
response = r.json()
assert response["ok"]
file_name = response["file"]["name"]
file_url = response["file"]["url_private"]
print("Downloaded " + file_name)
# download file
r = requests.get(file_url, headers={'Authorization': 'Bearer %s' % token})
r.raise_for_status
file_data = r.content # get binary content
# save file to disk
with open(file_name , 'w+b') as f:
f.write(bytearray(file_data))
print("Saved " + file_name + " in current folder")