Shane 7 months ago
parent c30fa1108d
commit b95952563f
  1. 19
      foodie_utils.py

@ -1778,21 +1778,26 @@ def check_author_rate_limit(author, max_tweets=17, tweet_window_seconds=86400):
logger.debug(f"[DEBUG] NO scripts running, will call get_x_rate_limit_status for {username}") logger.debug(f"[DEBUG] NO scripts running, will call get_x_rate_limit_status for {username}")
remaining, api_reset = get_x_rate_limit_status(author) remaining, api_reset = get_x_rate_limit_status(author)
logger.debug(f"[DEBUG] API returned: remaining={remaining}, api_reset={api_reset} for {username}") logger.debug(f"[DEBUG] API returned: remaining={remaining}, api_reset={api_reset} for {username}")
if remaining is None or api_reset is None: if remaining is None or api_reset is None:
# Fallback: Use last known quota or assume 0 remaining # If API call fails, use the stored rate limit info
if current_time < author_info.get('tweet_reset', current_time + tweet_window_seconds):
remaining = author_info.get('tweet_remaining', 0) remaining = author_info.get('tweet_remaining', 0)
reset = author_info.get('tweet_reset', current_time + tweet_window_seconds) reset = author_info.get('tweet_reset', current_time + tweet_window_seconds)
logger.warning(f"Test tweet failed for {username}, using last known quota: {remaining} remaining")
else: # If reset time has passed, assume quota is exhausted
remaining = 0 # Assume exhausted if API fails and reset time has passed if current_time >= reset:
remaining = 0
reset = current_time + tweet_window_seconds reset = current_time + tweet_window_seconds
logger.warning(f"Test tweet failed for {username}, assuming quota exhausted") logger.warning(f"Reset time passed and API check failed for {username}, assuming quota exhausted")
else:
logger.warning(f"API check failed for {username}, using stored quota: {remaining} remaining")
else: else:
# API call succeeded, update with actual values
remaining = min(remaining, max_tweets) # Ensure within Free tier limit remaining = min(remaining, max_tweets) # Ensure within Free tier limit
reset = api_reset reset = api_reset
logger.info(f"Updated rate limit info from API for {username}: {remaining} remaining")
# Update author info but preserve tweets_posted_in_run # Update author info
author_info['tweet_remaining'] = remaining author_info['tweet_remaining'] = remaining
author_info['tweet_reset'] = reset author_info['tweet_reset'] = reset
# Don't reset tweets_posted_in_run here # Don't reset tweets_posted_in_run here

Loading…
Cancel
Save