วิธีอ่านเมตาดาต้าหน้าจาก OneNote ด้วย Python

วิธีอ่านเมตาดาต้าหน้าจาก OneNote ด้วย Python

ไฟล์ OneNote .one เก็บข้อมูลเมตาที่คุณสามารถอ่านได้โดยไม่ต้องพาร์ส DOM ของเอกสารทั้งหมด ที่ระดับ document, Document.FileFormat บอกคุณว่าไฟล์ใช้รูปแบบ OneNote ใด ที่ระดับ page, แต่ละ Page จะบรรจุผู้เขียน, เวลาสร้าง, เวลาที่แก้ไขล่าสุด, และระดับลำดับชั้น Aspose.Note FOSS for Python เปิดเผยข้อมูลเหล่านี้ผ่านคลาส Document และ Page.


ข้อกำหนดเบื้องต้น

pip install aspose-note

เมตาดาต้าระดับเอกสาร

อ็อบเจ็กต์ Document เปิดเผยคุณสมบัติเมตาดาต้าเพียงหนึ่งรายการ:

คุณสมบัติประเภทคำอธิบาย
doc.FileFormatFileFormatรูปแบบ OneNote: FileFormat.OneNote2010, FileFormat.OneNoteOnline หรือ FileFormat.Unknown.
from aspose.note import Document

doc = Document("MyNotes.one")
print(f"File format: {doc.FileFormat}")

เมตาดาต้าระดับหน้า

แต่ละวัตถุ Page มี:

คุณสมบัติชนิดคำอธิบาย
page.Authorstr | Noneชื่อที่แสดงของผู้ใช้ที่สร้างหรือเป็นเจ้าของหน้า
page.CreationTimedatetime | Noneเวลาที่หน้าถูกสร้าง คืนค่าอ็อบเจ็กต์ Python datetime ในรูปแบบ UTC
page.LastModifiedTimedatetime | Noneเวลาที่หน้าถูกแก้ไขครั้งสุดท้าย
page.Levelint | 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

ดูเพิ่มเติม

 ภาษาไทย