daily backup 2026-09-22

This commit is contained in:
Adolfo Reyna
2026-09-22 23:00:26 -04:00
parent 5b7d59f761
commit 99bb011f7d
79 changed files with 5797 additions and 12 deletions
+37
View File
@@ -0,0 +1,37 @@
from pathlib import Path
import json
import fitz
from PIL import Image, ImageOps, ImageDraw
root=Path('/Users/adolforeyna/brain/exports')
out=root/'emi_astra_previews';out.mkdir(exist_ok=True)
doc=fitz.open(root/'emi_astra_family_that_remains.pdf')
results=[]
for i,p in enumerate(doc):
text=p.get_text().strip(); r=p.rect
bounds=[]
for block in p.get_text('dict')['blocks']:
for line in block.get('lines',[]):
for span in line['spans']:
b=fitz.Rect(span['bbox'])
if not r.contains(b):bounds.append({'text':span['text'],'bbox':list(b)})
results.append({'slide':i+1,'width_pt':r.width,'height_pt':r.height,'ratio':r.width/r.height,'text_characters':len(text),'text_outside_page':bounds})
p.get_pixmap(matrix=fitz.Matrix(1,1),alpha=False).save(out/f'emi_astra_slide_{i+1:02}.png')
(out/f'emi_astra_slide_{i+1:02}.txt').write_text(text)
assert len(doc)==11, len(doc)
assert all(abs(x['ratio']-16/9)<.001 for x in results)
assert all(x['text_characters']>100 for x in results)
assert not any(x['text_outside_page'] for x in results)
dom=json.loads((root/'emi_astra_dom_bounds.json').read_text())
assert len(dom)==11 and all(not s['overflow'] for s in dom)
full_text=' '.join(p.get_text() for p in doc)
for term in ['Matthew 28:18–20','ethnos','Romans 15:20','Chiapas','San Luis','Chile','Venezuela','4 / EXCHANGE','5 / PRAY','6 / STRENGTHEN CHILE','7 / FOCUS']:
assert term.casefold() in full_text.casefold(), f'Missing source detail: {term}'
w,h=768,432
sheet=Image.new('RGB',(w*2,(h+44)*6),'#dce1e6');draw=ImageDraw.Draw(sheet)
for i in range(len(doc)):
im=Image.open(out/f'emi_astra_slide_{i+1:02}.png').convert('RGB').resize((w,h))
x=(i%2)*w;y=(i//2)*(h+44)
sheet.paste(im,(x,y));draw.text((x+16,y+h+12),f'SLIDE {i+1:02}',fill='#172b45')
sheet.save(root/'emi_astra_contact_sheet.jpg',quality=94)
(root/'emi_astra_verification.json').write_text(json.dumps({'passed':True,'page_count':len(doc),'slides':results},indent=2))
print(json.dumps({'passed':True,'page_count':len(doc),'slides':results},indent=2))