File size: 1,508 Bytes
6548988
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import io
from typing import List, Dict
from PIL import Image, ImageDraw
import pandas as pd
import uuid, os

def crop_to_png_bytes(img_pil: Image.Image, x:int,y:int,w:int,h:int) -> bytes:
    crop = img_pil.crop((x,y,x+w,y+h))
    bio = io.BytesIO()
    crop.save(bio, format="PNG")
    return bio.getvalue()

def overlay_boxes(img_pil: Image.Image, boxes: List[Dict]) -> Image.Image:
    out = img_pil.copy()
    dr = ImageDraw.Draw(out)
    for b in boxes:
        x,y,w,h = b["x"],b["y"],b["w"],b["h"]
        dr.rectangle([x,y,x+w,y+h], outline=(124,58,237), width=6)
    return out

def to_excel_file(cards: List[Dict]) -> str:
    rows=[]
    for c in cards:
        rows.append({
            "box_id": c.get("box_id"),
            "company": c.get("company"),
            "person_kanji": c.get("person_kanji"),
            "person_kana": c.get("person_kana"),
            "person_romaji": c.get("person_romaji"),
            "title": c.get("title"),
            "department": c.get("department"),
            "email": ", ".join(c.get("email", [])),
            "phone": ", ".join(c.get("phone", [])),
            "website": c.get("website"),
            "address_jp": c.get("address_jp"),
            "notes": c.get("notes"),
            "source_name": c.get("source_name"),
        })
    df = pd.DataFrame(rows)
    path = f"/tmp/contacts-{uuid.uuid4().hex[:8]}.xlsx"
    with pd.ExcelWriter(path, engine="openpyxl") as w:
        df.to_excel(w, index=False, sheet_name="Contacts")
    return path