import json

def parse_intrinsics(intrinsics):
    if intrinsics is None:
        return [0.0, 0.0, 0.0, 0.0]
    return [intrinsics[0][0], intrinsics[0][2], intrinsics[1][1], intrinsics[1][2]]

metadata_path = "droid/metadata_all_new.jsonl" # this is the metadata data of (all) the episodes from my previous project
intrinsics = {}

metadata = {}
try:
    with open(metadata_path, 'r') as f:
        for line in f:
            data = json.loads(line)
            episode_meta = data[
                list(data.keys())[0]
            ]
            if episode_meta is not None:
                intrinsics[episode_meta["uuid"]] = {
                    episode_meta["ext1_cam_serial"]: {
                        "cameraMatrix": parse_intrinsics(episode_meta.get("ext1_cam_intrinsics", None)),
                        "distCoeffs": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
                        "width": 1280,
                        "height": 720,
                    },
                    episode_meta["ext2_cam_serial"]: {
                        "cameraMatrix": parse_intrinsics(episode_meta.get("ext2_cam_intrinsics", None)),
                        "distCoeffs": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
                        "width": 1280,
                        "height": 720,
                    },
                    episode_meta["wrist_cam_serial"]: {
                        "cameraMatrix": parse_intrinsics(episode_meta.get("wrist_cam_intrinsics", None)),
                        "distCoeffs": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
                        "width": 1280,
                        "height": 720,
                    },
                }
except Exception as e:
    print(e)
    breakpoint()

with open("droid/intrinsics_custom.json", "w") as f:
    json.dump(intrinsics, f, indent=4)