finryver-dev / notes /llm_notes_excel_converter.py
Sahil Garg
/notes-llm added, system.md file added
7e453aa
raw
history blame
2.28 kB
#!/usr/bin/env python3
"""
LLM Notes Excel Converter - Convert JSON notes to Excel format
"""
import sys
import os
import json
import logging
from pathlib import Path
# Add parent directory to path for imports
sys.path.insert(0, str(Path(__file__).parent.parent)) # Insert at beginning to prioritize main utils
from utils.utils_normalize import normalize_llm_notes_json
from notes.json_to_excel import json_to_xlsx
# Configure logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def main():
"""Main function to convert LLM-generated notes JSON to Excel"""
if len(sys.argv) != 3:
logger.error("Usage: python llm_notes_excel_converter.py <input_json> <output_excel>")
sys.exit(1)
input_json = sys.argv[1]
output_excel = sys.argv[2]
if not os.path.exists(input_json):
logger.error(f"Input JSON file not found: {input_json}")
sys.exit(1)
try:
logger.info(f"Converting notes from {input_json} to {output_excel}")
# Load the generated notes
with open(input_json, "r", encoding="utf-8") as f:
notes_data = json.load(f)
# Normalize the JSON structure
wrapped_json_path = "data/generated_notes/notes_wrapped.json"
os.makedirs("data/generated_notes", exist_ok=True)
if isinstance(notes_data, dict) and "notes" in notes_data:
# Already in correct format
normalized_data = notes_data
else:
# Wrap in notes structure
normalized_data = {"notes": notes_data} if isinstance(notes_data, list) else notes_data
# Normalize using the utility function
wrapped = normalize_llm_notes_json(normalized_data)
# Save wrapped JSON
with open(wrapped_json_path, "w", encoding="utf-8") as f:
json.dump(wrapped, f, ensure_ascii=False, indent=2)
# Convert to Excel
os.makedirs(os.path.dirname(output_excel), exist_ok=True)
json_to_xlsx(wrapped_json_path, output_excel)
logger.info(f"Excel conversion completed. Output saved to: {output_excel}")
return 0
except Exception as e:
logger.error(f"Error converting to Excel: {e}")
return 1
if __name__ == "__main__":
sys.exit(main())