|
|
""" |
|
|
Read and analyze SPARKNET presentation |
|
|
""" |
|
|
import sys |
|
|
from pptx import Presentation |
|
|
|
|
|
def read_presentation(pptx_path): |
|
|
"""Read PowerPoint presentation and extract content""" |
|
|
try: |
|
|
prs = Presentation(pptx_path) |
|
|
|
|
|
print(f"Total Slides: {len(prs.slides)}\n") |
|
|
print("=" * 80) |
|
|
|
|
|
for idx, slide in enumerate(prs.slides, 1): |
|
|
print(f"\n{'='*80}") |
|
|
print(f"SLIDE {idx}") |
|
|
print('='*80) |
|
|
|
|
|
|
|
|
title = "" |
|
|
for shape in slide.shapes: |
|
|
if shape.has_text_frame: |
|
|
if shape.is_placeholder: |
|
|
phf = shape.placeholder_format |
|
|
if phf.type == 1: |
|
|
title = shape.text |
|
|
break |
|
|
|
|
|
print(f"Title: {title if title else '(No title)'}") |
|
|
print("-" * 80) |
|
|
|
|
|
|
|
|
print("Content:") |
|
|
for shape in slide.shapes: |
|
|
if shape.has_text_frame: |
|
|
for paragraph in shape.text_frame.paragraphs: |
|
|
text = paragraph.text.strip() |
|
|
if text: |
|
|
level = paragraph.level |
|
|
indent = " " * level |
|
|
print(f"{indent}- {text}") |
|
|
|
|
|
|
|
|
if slide.has_notes_slide: |
|
|
notes_slide = slide.notes_slide |
|
|
if notes_slide.notes_text_frame: |
|
|
notes = notes_slide.notes_text_frame.text.strip() |
|
|
if notes: |
|
|
print("\nSpeaker Notes:") |
|
|
print(notes) |
|
|
|
|
|
print("\n" + "="*80) |
|
|
|
|
|
except Exception as e: |
|
|
print(f"Error reading presentation: {e}", file=sys.stderr) |
|
|
import traceback |
|
|
traceback.print_exc() |
|
|
return False |
|
|
|
|
|
return True |
|
|
|
|
|
if __name__ == "__main__": |
|
|
pptx_path = "/home/mhamdan/SPARKNET/presentation/SPARKNET_Academic_Presentation.pptx" |
|
|
read_presentation(pptx_path) |
|
|
|