main
Shane 7 months ago
parent e53f3abc1d
commit 889254d151
  1. 31
      foodie_utils.py

@ -45,13 +45,27 @@ IMAGE_UPLOAD_TIMEOUT = 30 # Added to fix NameError
IMAGE_EXPIRATION_DAYS = 7 # 7 days, consistent with foodie_automator_rss.py
def load_json_file(file_path, expiration_hours=None, default=None):
"""
Load JSON file, handling specific cases for author_state.json and other files.
Args:
file_path (str): Path to the JSON file.
expiration_hours (float): Hours after which entries expire (for list-based files).
default: Default value to return if file is missing or invalid.
Returns:
Loaded data or default value.
"""
logger = logging.getLogger(__name__)
# Set default based on file type
if default is None:
if "rate_limit_info" in file_path or "notification_tracking" in file_path:
if "author_state" in file_path:
default = {"last_author_index": -1}
elif "rate_limit_info" in file_path or "notification_tracking" in file_path:
default = {}
else:
default = []
# Return default if file doesn't exist
if not os.path.exists(file_path):
logger.info(f"File {file_path} does not exist. Returning default: {default}")
return default
@ -60,18 +74,29 @@ def load_json_file(file_path, expiration_hours=None, default=None):
with open(file_path, 'r') as f:
data = json.load(f)
# Handle rate_limit_info.json and notification_tracking.json as dicts
# Handle author_state.json (expects dict with last_author_index)
if "author_state" in file_path:
if not isinstance(data, dict):
logger.warning(f"Data in {file_path} is not a dictionary, resetting to default")
return default
if "last_author_index" not in data:
logger.warning(f"Missing last_author_index in {file_path}, resetting to default")
return default
return data
# Handle rate_limit_info.json and notification_tracking.json (expect dict)
if "rate_limit_info" in file_path or "notification_tracking" in file_path:
if not isinstance(data, dict):
logger.warning(f"Data in {file_path} is not a dictionary, resetting to default")
return default
return data
# For other files, expect a list
# Handle list-based files
if not isinstance(data, list):
logger.warning(f"Data in {file_path} is not a list, resetting to default")
return default
# Apply expiration filtering for list-based files
if expiration_hours is not None:
# Use days for used_images.json, hours for others
if "used_images" in file_path:

Loading…
Cancel
Save