วิธีอ่านเมตาดาต้าหน้าจาก OneNote ด้วย Python
ไฟล์ OneNote .one เก็บข้อมูลเมตาที่คุณสามารถอ่านได้โดยไม่ต้องพาร์ส DOM ของเอกสารทั้งหมด ที่ระดับ document, Document.FileFormat บอกคุณว่าไฟล์ใช้รูปแบบ OneNote ใด ที่ระดับ page, แต่ละ Page จะบรรจุผู้เขียน, เวลาสร้าง, เวลาที่แก้ไขล่าสุด, และระดับลำดับชั้น Aspose.Note FOSS for Python เปิดเผยข้อมูลเหล่านี้ผ่านคลาส Document และ Page.
ข้อกำหนดเบื้องต้น
pip install aspose-noteเมตาดาต้าระดับเอกสาร
อ็อบเจ็กต์ Document เปิดเผยคุณสมบัติเมตาดาต้าเพียงหนึ่งรายการ:
| คุณสมบัติ | ประเภท | คำอธิบาย |
|---|---|---|
doc.FileFormat | FileFormat | รูปแบบ OneNote: FileFormat.OneNote2010, FileFormat.OneNoteOnline หรือ FileFormat.Unknown. |
from aspose.note import Document
doc = Document("MyNotes.one")
print(f"File format: {doc.FileFormat}")เมตาดาต้าระดับหน้า
แต่ละวัตถุ Page มี:
| คุณสมบัติ | ชนิด | คำอธิบาย |
|---|---|---|
page.Author | str | None | ชื่อที่แสดงของผู้ใช้ที่สร้างหรือเป็นเจ้าของหน้า |
page.CreationTime | datetime | None | เวลาที่หน้าถูกสร้าง คืนค่าอ็อบเจ็กต์ Python datetime ในรูปแบบ UTC |
page.LastModifiedTime | datetime | None | เวลาที่หน้าถูกแก้ไขครั้งสุดท้าย |
page.Level | int | None | ระดับการเยื้องของหน้าย่อย 0 = หน้าระดับบนสุด, 1 = หน้าย่อยระดับแรก, 2 = ระดับที่สอง, เป็นต้น |
ขั้นตอนที่ 1: อ่าน Metadata สำหรับทุกหน้า
from aspose.note import Document, Page
doc = Document("ProjectNotes.one")
for i, page in enumerate(doc, start=1):
title = ""
if page.Title and page.Title.TitleText:
title = page.Title.TitleText.Text.strip()
level = page.Level or 0
indent = " " * level
author = page.Author or "(unknown)"
created = page.CreationTime.strftime("%Y-%m-%d") if page.CreationTime else "(none)"
modified = page.LastModifiedTime.strftime("%Y-%m-%d %H:%M") if page.LastModifiedTime else "(none)"
print(f"{indent}[{i}] {title or '(untitled)'}")
print(f"{indent} Author: {author}")
print(f"{indent} Created: {created}")
print(f"{indent} Modified: {modified}")
print(f"{indent} Level: {level}")ตัวอย่างเต็ม: รายงานเมตาดาต้า
from aspose.note import Document
def print_metadata_report(one_path: str) -> None:
doc = Document(one_path)
print()
for i, page in enumerate(doc, start=1):
title = ""
if page.Title and page.Title.TitleText:
title = page.Title.TitleText.Text.strip()
level = page.Level or 0
prefix = " " * level + f"[{i}]"
parts = [prefix, f'"{title or "(untitled)"}"']
if page.Author:
parts.append(f"by {page.Author}")
if page.CreationTime:
parts.append(f"created {page.CreationTime.strftime('%Y-%m-%d')}")
if page.LastModifiedTime:
parts.append(f"modified {page.LastModifiedTime.strftime('%Y-%m-%d')}")
print(" ".join(parts))
print_metadata_report("ProjectNotes.one")การตรวจจับหน้าย่อย
ใน OneNote หน้า‑ย่อยจะถูกเยื้องแบบมองเห็นใต้หน้าหลักของมัน คุณสมบัติ page.Level สะท้อนการซ้อนกันนี้:
from aspose.note import Document
doc = Document("MyNotes.one")
for page in doc:
level = page.Level or 0
title = ""
if page.Title and page.Title.TitleText:
title = page.Title.TitleText.Text.strip()
indent = " " * level
marker = "├─" if level > 0 else "•"
print(f"{indent}{marker} {title or '(untitled)'}")ระดับค่า:
0: หน้าในระดับบนสุด1: หน้าในระดับย่อยแรก (เยื้องหนึ่ง)2: หน้าในระดับย่อยที่สอง (เยื้องสอง)
บันทึก
- Timestamp ทั้งหมด (
CreationTime,LastModifiedTime) เป็นวัตถุdatetimeใน UTC เมื่อมีอยู่ page.Levelคืนค่าNoneสำหรับหน้า ที่ระดับไม่ได้ถูกจัดเก็บในรูปแบบไบนารี ปฏิบัติNoneเป็น0โดยใช้page.Level or 0