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
|
IMAGE_EXPIRATION_DAYS = 7 # 7 days, consistent with foodie_automator_rss.py
|
||||||
|
|
||||||
def load_json_file(file_path, expiration_hours=None, default=None):
|
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__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
# Set default based on file type
|
||||||
if default is None:
|
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 = {}
|
default = {}
|
||||||
else:
|
else:
|
||||||
default = []
|
default = []
|
||||||
|
|
||||||
|
# Return default if file doesn't exist
|
||||||
if not os.path.exists(file_path):
|
if not os.path.exists(file_path):
|
||||||
logger.info(f"File {file_path} does not exist. Returning default: {default}")
|
logger.info(f"File {file_path} does not exist. Returning default: {default}")
|
||||||
return 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:
|
with open(file_path, 'r') as f:
|
||||||
data = json.load(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 "rate_limit_info" in file_path or "notification_tracking" in file_path:
|
||||||
if not isinstance(data, dict):
|
if not isinstance(data, dict):
|
||||||
logger.warning(f"Data in {file_path} is not a dictionary, resetting to default")
|
logger.warning(f"Data in {file_path} is not a dictionary, resetting to default")
|
||||||
return default
|
return default
|
||||||
return data
|
return data
|
||||||
|
|
||||||
# For other files, expect a list
|
# Handle list-based files
|
||||||
if not isinstance(data, list):
|
if not isinstance(data, list):
|
||||||
logger.warning(f"Data in {file_path} is not a list, resetting to default")
|
logger.warning(f"Data in {file_path} is not a list, resetting to default")
|
||||||
return default
|
return default
|
||||||
|
|
||||||
|
# Apply expiration filtering for list-based files
|
||||||
if expiration_hours is not None:
|
if expiration_hours is not None:
|
||||||
# Use days for used_images.json, hours for others
|
# Use days for used_images.json, hours for others
|
||||||
if "used_images" in file_path:
|
if "used_images" in file_path:
|
||||||
|
|||||||
Reference in New Issue
Block a user