From 8b79eaafea0cde50c4d2dce510afa56887751013 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Wed, 25 Apr 2018 16:13:03 +0200 Subject: [PATCH] [tumblr] log actual time of rate limit resets ... instead of the amount of seconds until a reset --- gallery_dl/extractor/tumblr.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/gallery_dl/extractor/tumblr.py b/gallery_dl/extractor/tumblr.py index c4e94dad..a40969af 100644 --- a/gallery_dl/extractor/tumblr.py +++ b/gallery_dl/extractor/tumblr.py @@ -10,6 +10,7 @@ from .common import Extractor, Message from .. import text, util, exception +from datetime import datetime, timedelta import re import time @@ -322,10 +323,11 @@ class TumblrAPI(): # daily rate limit if response.headers.get("x-ratelimit-perday-remaining") == "0": + reset = response.headers.get("x-ratelimit-perday-reset") self.log.error( "Daily API rate limit exceeded: aborting; " - "%s seconds until rate limit reset", - response.headers.get("x-ratelimit-perday-reset"), + "rate limit will reset at %s", + self._to_time(reset), ) raise exception.StopExtraction() @@ -334,11 +336,19 @@ class TumblrAPI(): if reset: self.log.info( "Hourly API rate limit exceeded; " - "waiting %s seconds for rate limit reset", - reset, + "waiting until %s for rate limit reset", + self._to_time(reset), ) time.sleep(int(reset) + 1) return self._call(blog, endpoint, params) self.log.error(data) raise exception.StopExtraction() + + @staticmethod + def _to_time(reset): + try: + reset_time = datetime.now() + timedelta(seconds=int(reset)) + except (ValueError, TypeError): + return "?" + return reset_time.strftime("%H:%M:%S")