update write to rate limit file
This commit is contained in:
+24
-3
@@ -1182,7 +1182,7 @@ def check_author_rate_limit(author, max_tweets=17, tweet_window_seconds=86400):
|
|||||||
# Load rate limit info
|
# Load rate limit info
|
||||||
rate_limit_info = load_json_file(rate_limit_file, default={})
|
rate_limit_info = load_json_file(rate_limit_file, default={})
|
||||||
|
|
||||||
# Get script run ID (set at startup in foodie_automator_rss.py)
|
# Get script run ID
|
||||||
if not hasattr(check_author_rate_limit, "script_run_id"):
|
if not hasattr(check_author_rate_limit, "script_run_id"):
|
||||||
check_author_rate_limit.script_run_id = int(current_time)
|
check_author_rate_limit.script_run_id = int(current_time)
|
||||||
logger.info(f"Set script_run_id to {check_author_rate_limit.script_run_id}")
|
logger.info(f"Set script_run_id to {check_author_rate_limit.script_run_id}")
|
||||||
@@ -1308,8 +1308,29 @@ def get_x_rate_limit_status(author):
|
|||||||
headers = response.headers
|
headers = response.headers
|
||||||
|
|
||||||
# Extract app-level rate limit info from headers
|
# Extract app-level rate limit info from headers
|
||||||
remaining = int(headers.get('x-rate-limit-remaining', 0))
|
remaining_str = headers.get('x-rate-limit-remaining')
|
||||||
reset = int(headers.get('x-rate-limit-reset', 0))
|
reset_str = headers.get('x-rate-limit-reset')
|
||||||
|
if remaining_str is None or reset_str is None:
|
||||||
|
logger.error(f"Rate limit headers missing for {username}: {headers}")
|
||||||
|
return None, None
|
||||||
|
|
||||||
|
try:
|
||||||
|
remaining = int(remaining_str)
|
||||||
|
reset = int(reset_str)
|
||||||
|
except ValueError as e:
|
||||||
|
logger.error(f"Failed to parse rate limit headers for {username}: remaining={remaining_str}, reset={reset_str}, error={e}")
|
||||||
|
return None, None
|
||||||
|
|
||||||
|
# Validate remaining tweets
|
||||||
|
if remaining < 0 or remaining > 17: # Free tier max is 17
|
||||||
|
logger.warning(f"Invalid remaining tweets for {username}: {remaining}. Capping at 17.")
|
||||||
|
remaining = min(remaining, 17)
|
||||||
|
|
||||||
|
# Ensure reset is in the future
|
||||||
|
current_time = int(time.time())
|
||||||
|
if reset <= current_time:
|
||||||
|
logger.warning(f"Reset time {reset} is in the past for {username}. Setting to 24 hours from now.")
|
||||||
|
reset = current_time + 86400 # 24 hours
|
||||||
|
|
||||||
if response.status_code == 201:
|
if response.status_code == 201:
|
||||||
# Delete the test tweet
|
# Delete the test tweet
|
||||||
|
|||||||
Reference in New Issue
Block a user