fix error
This commit is contained in:
+28
-3
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user