From bdd8170a133f2a49ec676b98063ba8f755f877cd Mon Sep 17 00:00:00 2001 From: Domagoj Filipovic Date: Fri, 24 Jan 2020 12:09:46 +1100 Subject: [PATCH 1/3] fix rate limit issue --- slack_export.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/slack_export.py b/slack_export.py index 0084ad5..2f60c1e 100644 --- a/slack_export.py +++ b/slack_export.py @@ -5,6 +5,7 @@ import io import shutil import copy +import requests from datetime import datetime from pick import pick from time import sleep @@ -22,12 +23,24 @@ def getHistory(pageableObject, channelId, pageSize = 100): lastTimestamp = None while(True): - response = pageableObject.history( - channel = channelId, - latest = lastTimestamp, - oldest = 0, - count = pageSize - ).body + try: + response = pageableObject.history( + channel = channelId, + latest = lastTimestamp, + oldest = 0, + count = pageSize + ).body + except requests.exceptions.HTTPError as e: + if e.response.status_code == 429: + retryInSeconds = int(e.response.headers['Retry-After']) + print(u"Rate limit hit. Retrying in {0} second{1}.".format(retryInSeconds, "s" if retryInSeconds > 1 else "")) + sleep(retryInSeconds) + response = pageableObject.history( + channel = channelId, + latest = lastTimestamp, + oldest = 0, + count = pageSize + ).body messages.extend(response['messages']) From 666a8826e7d23ae891e95e15c605d063f5a80bd2 Mon Sep 17 00:00:00 2001 From: Domagoj Filipovic Date: Fri, 24 Jan 2020 12:30:11 +1100 Subject: [PATCH 2/3] add dots when fetching more data --- slack_export.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/slack_export.py b/slack_export.py index 2f60c1e..e5bebac 100644 --- a/slack_export.py +++ b/slack_export.py @@ -45,11 +45,16 @@ def getHistory(pageableObject, channelId, pageSize = 100): messages.extend(response['messages']) if (response['has_more'] == True): + sys.stdout.write(".") + sys.stdout.flush() lastTimestamp = messages[-1]['ts'] # -1 means last element in a list sleep(1) # Respect the Slack API rate limit else: break + if lastTimestamp != None: + print("") + messages.sort(key = lambda message: message['ts']) return messages From 7c2eac65ef1701bc79cd41d0f3e6065f27e7b3e9 Mon Sep 17 00:00:00 2001 From: Domagoj Filipovic Date: Fri, 24 Jan 2020 12:31:59 +1100 Subject: [PATCH 3/3] add sys import --- slack_export.py | 1 + 1 file changed, 1 insertion(+) diff --git a/slack_export.py b/slack_export.py index e5bebac..70150ae 100644 --- a/slack_export.py +++ b/slack_export.py @@ -6,6 +6,7 @@ import shutil import copy import requests +import sys from datetime import datetime from pick import pick from time import sleep