from openai import OpenAI
import os
import json

os.environ["OPENAI_API_KEY"] = "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"

client = OpenAI()

MAP_FILE = "batchapi/image_file_ids.json"

image_map = {}
total_files_seen = 0

print("Fetching all files from OpenAI (this may take a while for 100k+ files)...")

# Start first page
page = client.files.list(limit=100)

while True:
    for f in page.data:
        total_files_seen += 1

        if f.purpose != "vision":
            continue

        # Keep the most recent upload if duplicates exist
        if (
            f.filename not in image_map
            or f.created_at > image_map[f.filename]["created_at"]
        ):
            image_map[f.filename] = {
                "id": f.id,
                "created_at": f.created_at
            }

    if not page.has_more:
        break

    page = client.files.list(
        limit=100,
        after=page.data[-1].id
    )

print("Total files scanned:", total_files_seen)
print("Vision images found:", len(image_map))

# Remove created_at before saving
clean_map = {k: v["id"] for k, v in image_map.items()}

# os.makedirs("batchapi", exist_ok=True)

with open(MAP_FILE, "w") as f:
    json.dump(clean_map, f, indent=2)

print("Recreated image_file_ids.json successfully.")

# # client = OpenAI()

# # files = client.files.list()
    
# # with open('batchapi/image_file_ids.json', 'a') as fl:
# #     for f in files.data:
# #         if f.purpose == 'vision':
# #             print(f.id, f.purpose, f.filename, f.bytes)
# #             fl.write(f'{f.id} : {f.purpose}, {f.filename}, {f.bytes}\n')


# client = OpenAI()

# files = client.files.list()

# vision_files = [f for f in files.data if f.purpose == "vision"]

# print("Found", len(vision_files), "vision files")

# for f in vision_files:
#     print(f.id, f.filename)


# import json

# MAP_FILE = "batchapi/image_file_ids.json"

# image_map = {}

# for f in vision_files:
#     image_map[f.filename] = f.id

# with open(MAP_FILE, "w") as fp:
#     json.dump(image_map, fp, indent=2)

# print("Recreated image_file_ids.json with", len(image_map), "entries")
