File size: 2,283 Bytes
7e453aa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/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())