چگونه متادیتای صفحه را از OneNote با پایتون بخوانیم

چگونه متادیتای صفحه را از OneNote با پایتون بخوانیم

OneNote .one فایل‌ها متادیتایی ذخیره می‌کنند که می‌توانید بدون تجزیه کامل DOM سند آن را بخوانید. در سطح document، Document.FileFormat به شما می‌گوید که فایل از کدام نسخه OneNote استفاده می‌کند. در سطح page، هر Page شامل نویسنده، زمان ایجاد، زمان آخرین تغییر و سطح سلسله‌مراتبی است. Aspose.Note FOSS برای 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: خواندن متادیتا برای هر صفحه

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: صفحه زیرمجموعه سطح دو (دو تورفتگی)

یادداشت‌ها

  • تمام زمان‌مهرها (CreationTime, LastModifiedTime) هنگام حضور، اشیاء datetime در UTC هستند.
  • page.Level برای صفحاتی که سطح در قالب باینری ذخیره نشده بود، None را برمی‌گرداند. None را به عنوان 0 با استفاده از page.Level or 0 در نظر بگیرید.

موارد مرتبط

 فارسی