How to download files that were created by a slackbot?(如何下载由Slackbot创建的文件?)
本文介绍了如何下载由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&;内标识?代币是什么?它是机器人的OAuth令牌吗?
假设我希望从Slackbot创建的服务器下载名为stats.csv
的文件,但我没有它的URL,我如何下载它?
推荐答案
我不建议您自己拼凑下载文件的URL,因为Slack可能会更改它,然后您的代码就会崩溃。
取而代之,首先使用文件ID调用接口方法files.info
获取当前文件的URL,然后使用属性url_private
作为下载URL。或者,您也可以调用files.list
以获取具有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")
这篇关于如何下载由Slackbot创建的文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何下载由Slackbot创建的文件?
基础教程推荐
猜你喜欢
- 如何在Python中绘制多元函数? 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01
- 合并具有多索引的两个数据帧 2022-01-01
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01