Extract GroundingGPT script output
Extracts from a script written to run GroundingGPT
from pathlib import Path
results = []
for file in Path("/tmp").glob("ggpt*.txt"):
current = {}
with open(file, "r") as f:
lines = f.readlines()
for line in lines:
line = line.strip()
if line.startswith("🔵 Loading object masks"):
if current != {}:
results.append(current)
current = {}
elif line.startswith("📝 Model Output:"):
text_start = line.find('"')
text_end = line.rfind('"')
current["text"] = line[text_start + 1:text_end]
elif line.startswith("🎯 Randomly selected object:"):
object_start = line.find(':')
id_start = line.find('(')
id_end = line.rfind(')')
current["object"] = line[object_start + 1:id_start].strip()
current["id"] = line[id_start + 1:id_end]
elif line.startswith("✅ Saved visualization to"):
output_filename = line[line.find("to") + 3:].strip()
current["output_filename"] = output_filename
assert "_0/viz_random_object/result.png" in output_filename
tmp = output_filename.replace("_0/viz_random_object/result.png", "")
parts = tmp.split("/")
current["orginal_id"] = parts[-1]
else:
continue
results[0:2]
import json
with open("/tmp/ggpt2.json", "w") as f:
json.dump(results, f, indent=4)
numbered = []
for idx, res in enumerate(results):
parts = res["orginal_id"].split("_")
numbered.append({
"person": parts[1],
"room": parts[3],
"filename": res["orginal_id"],
"id": f"{res['orginal_id']}__ggpt__{idx}",
"topic": res["object"],
"snippet": res["text"]
})
import json
with open("/tmp/ggpt_numbered2.json", "w") as f:
json.dump(numbered, f, indent=4)