Files
LEDMatrix/debug_of_the_day.py
2025-09-12 19:09:43 -04:00

108 lines
3.7 KiB
Python

#!/usr/bin/env python3
"""
Debug script for OfTheDayManager issues
Run this on the Raspberry Pi to diagnose the problem
Usage:
1. Copy this file to your Raspberry Pi
2. Run: python3 debug_of_the_day.py
3. Check the output for any errors or issues
This script will help identify why the OfTheDayManager is not loading data files.
"""
import json
import os
import sys
from datetime import date
def debug_of_the_day():
print("=== OfTheDayManager Debug Script ===")
print(f"Current working directory: {os.getcwd()}")
print(f"Python path: {sys.path}")
# Check if we're in the right directory
if not os.path.exists('config/config.json'):
print("ERROR: config/config.json not found. Make sure you're running from the LEDMatrix root directory.")
return
# Load the actual config
try:
with open('config/config.json', 'r') as f:
config = json.load(f)
print("✓ Successfully loaded config.json")
except Exception as e:
print(f"ERROR loading config.json: {e}")
return
# Check of_the_day configuration
of_the_day_config = config.get('of_the_day', {})
print(f"OfTheDay enabled: {of_the_day_config.get('enabled', False)}")
if not of_the_day_config.get('enabled', False):
print("OfTheDay is disabled in config!")
return
categories = of_the_day_config.get('categories', {})
print(f"Categories configured: {list(categories.keys())}")
# Test each category
today = date.today()
day_of_year = today.timetuple().tm_yday
print(f"Today is day {day_of_year} of the year")
for category_name, category_config in categories.items():
print(f"\n--- Testing category: {category_name} ---")
print(f"Category enabled: {category_config.get('enabled', True)}")
if not category_config.get('enabled', True):
print("Category is disabled, skipping...")
continue
data_file = category_config.get('data_file')
print(f"Data file: {data_file}")
# Test path resolution
if not os.path.isabs(data_file):
if data_file.startswith('of_the_day/'):
file_path = os.path.join(os.getcwd(), data_file)
else:
file_path = os.path.join(os.getcwd(), 'of_the_day', data_file)
else:
file_path = data_file
file_path = os.path.abspath(file_path)
print(f"Resolved path: {file_path}")
print(f"File exists: {os.path.exists(file_path)}")
if not os.path.exists(file_path):
print(f"ERROR: Data file not found at {file_path}")
continue
# Test JSON loading
try:
with open(file_path, 'r', encoding='utf-8') as f:
data = json.load(f)
print(f"✓ Successfully loaded JSON with {len(data)} items")
# Check for today's entry
day_key = str(day_of_year)
if day_key in data:
item = data[day_key]
print(f"✓ Found entry for day {day_of_year}: {item.get('title', 'No title')}")
else:
print(f"✗ No entry found for day {day_of_year}")
# Show some nearby entries
nearby_days = [k for k in data.keys() if k.isdigit() and abs(int(k) - day_of_year) <= 5]
print(f"Nearby days with entries: {sorted(nearby_days)}")
except Exception as e:
print(f"ERROR loading JSON: {e}")
import traceback
traceback.print_exc()
print("\n=== Debug complete ===")
if __name__ == "__main__":
debug_of_the_day()