-
Notifications
You must be signed in to change notification settings - Fork 0
/
delete-files.py
72 lines (53 loc) · 2.13 KB
/
delete-files.py
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import requests
from datetime import datetime, timedelta
import time
import sys
# Your Settings Here
WEEKS = 6 # How many weeks old must a file be to be considered.
MB = 10 # How big must a file be in order to be considered.
TOKEN = "YOUR-SLACK-TOKEN-HERE" # Look at https://api.slack.com/web#authentication
# Set to True to actually delete files, otherwise it's a dry run.
REALLY_DELETE = False
# You shouldn't need to change anything below here.
threshold = datetime.now() - timedelta(weeks=WEEKS)
unixtime = time.mktime(threshold.timetuple())
params = {'token': TOKEN, 'ts_to': unixtime, 'page': 1}
print "\nCriteria: Looking for files %s weeks old and larger than %s MB." % (WEEKS, MB)
if not REALLY_DELETE:
print "\n######################################## DRY RUN ########################################"
print " Nothing is really being deleted. Set REALLY_DELETE = True to delete files for realsies."
print "###########################################################################################"
print "\nFetching Files with %s" % params
result = requests.get('https://slack.com/api/files.list', params=params)
json = result.json()
if not json['ok']:
print "Is that a valid TOKEN?"
print json
sys.exit(99)
pages = json['paging']['pages']
files = json['files']
for i in range(2, pages + 1):
params['page'] = i
print "Fetching Files with %s" % params
result = requests.get('https://slack.com/api/files.list', params=params)
json = result.json()
files += json['files']
print "\n%s files match your age criteria.\n" % len(files)
params = {'token': TOKEN}
total_bytes_deleted = 0
for f in files:
if f['size'] > MB * 1000000:
print "%s: %s MB" % (f['name'], f['size'] / 1000000),
if REALLY_DELETE:
params['file'] = f['id']
a = requests.get('https://slack.com/api/files.delete', params=params)
if a.status_code == 200:
print " - Deleted"
total_bytes_deleted += f['size']
else:
print " - ERROR: %s " % a.status_code
print a.json()
print ""
else:
print " - Matched Age and Size Criteria."
print "\nDeleted %s MB." % (total_bytes_deleted / 1000000)