自Slack DATE以来如何删除所有文件?

问题描述 投票:0回答:2

我想知道如何使用Slack API从30天后删除所有文件?

bash slack slack-api
2个回答
1
投票

由于我没有找到Stackoverflow回答这个问题,我创建了一个单行bash脚本来做到这一点:

curl -X GET -H 'Authorization: Bearer xoxp-yourtoken' \
https://slack.com/api/files.list\?ts_to\=$(date -d "$date -30 days" +"%s") \
| jq -r '.files[] | .id' \
| xargs -I {} -n 1 curl -X POST -H 'Authorization: Bearer xoxp-yourtoken' \
https://slack.com/api/files.delete\?file\={}

这个命令会做什么:

  1. 从松弛的api开始,它将获得30天以来所有文件的列表;
  2. 它解析JSON答案并在换行符分隔列表中返回文件的ID。
  3. 然后对于每个ID,它将调用files.delete。

你会需要 :

  1. jq解析json:sudo apt install jq
  2. 一个松散的授权应用程序来获取您的Bearer密钥

您需要创建一个新的slack-api应用程序,然后选择权限作为特征和功能,如下所示:

enter image description here

最后,您进入OAuth和权限并复制密钥。

请享用!


1
投票

(不是答案,而是一个很大的评论)

我不是巨大的一线队员的忠实粉丝。如何更容易维护:

list_files() {
    local last_month=$(date -d "30 days ago" "+%s")
    local url="https://slack.com/api/files.list?ts_to=$last_month"
    local curl_opts=( 
        -X GET 
        -H "Authorization: Bearer $token" 
    )
    curl "${curl_opts[@]}" "$url"
}

extract_ids() {
    jq -r '.files[] | .id'
}

delete_files() {
    local url="https://slack.com/api/files.delete?file={}"
    local curl_opts=( 
        -X POST 
        -H "Authorization: Bearer $token" 
    )
    xargs -I {} -n 1 curl "${curl_opts[@]}" "$url"
}

token='xoxp-yourtoken'
list_files | extract_ids | delete_files
© www.soinside.com 2019 - 2024. All rights reserved.