34 lines
1.0 KiB
Python
34 lines
1.0 KiB
Python
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
from pptx import Presentation
|
|
from pptx.enum.shapes import MSO_SHAPE_TYPE
|
|
|
|
|
|
def main() -> None:
|
|
base_dir = Path(__file__).resolve().parent
|
|
src = base_dir / "resources" / "inputs" / "ai_work_source.pptx"
|
|
out_dir = base_dir / "resources" / "assets" / "ai_work_source_assets"
|
|
out_dir.mkdir(parents=True, exist_ok=True)
|
|
|
|
prs = Presentation(str(src))
|
|
for idx, slide in enumerate(prs.slides, start=1):
|
|
pics = [sh for sh in slide.shapes if sh.shape_type == MSO_SHAPE_TYPE.PICTURE]
|
|
if not pics:
|
|
continue
|
|
if len(pics) != 1:
|
|
print(f"Slide {idx}: pictures={len(pics)} (expected 1). Extracting all.")
|
|
|
|
for j, pic in enumerate(pics, start=1):
|
|
image = pic.image
|
|
ext = image.ext or "bin"
|
|
out = out_dir / f"slide{idx:02d}_img{j:02d}.{ext}"
|
|
out.write_bytes(image.blob)
|
|
print(f"wrote {out} ({len(image.blob):,} bytes)")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|