Cách Đọc Siêu Dữ Liệu Trang từ OneNote bằng Python

Cách Đọc Siêu Dữ Liệu Trang từ OneNote bằng Python

Các tệp OneNote .one lưu trữ siêu dữ liệu mà bạn có thể đọc mà không cần phân tích toàn bộ DOM của tài liệu. Ở mức document, Document.FileFormat cho bạn biết biến thể OneNote nào mà tệp sử dụng. Ở mức page, mỗi Page chứa thông tin tác giả, thời gian tạo, thời gian sửa đổi lần cuối và cấp độ phân cấp. Aspose.Note FOSS for Python cung cấp các thông tin này thông qua các lớp DocumentPage.


Điều kiện tiên quyết

pip install aspose-note

Siêu dữ liệu cấp tài liệu

Đối tượng Document cung cấp một thuộc tính siêu dữ liệu:

Thuộc tínhKiểuMô tả
doc.FileFormatFileFormatBiến thể OneNote: FileFormat.OneNote2010, FileFormat.OneNoteOnline, hoặc FileFormat.Unknown.
from aspose.note import Document

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

Metadata cấp trang

Mỗi đối tượng Page chứa:

PropertyTypeDescription
page.Authorstr | NoneTên hiển thị của người dùng đã tạo hoặc sở hữu trang.
page.CreationTimedatetime | NoneThời gian tạo trang. Trả về một đối tượng Python datetime ở múi giờ UTC.
page.LastModifiedTimedatetime | NoneThời gian trang được sửa đổi lần cuối.
page.Levelint | NoneMức độ thụt lề của trang con. 0 = trang cấp cao nhất, 1 = trang con cấp một, 2 = cấp hai, v.v.

Bước 1: Đọc siêu dữ liệu cho mỗi trang

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}")

Ví dụ đầy đủ: Báo cáo siêu dữ liệu

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")

Phát hiện các trang phụ

Trong OneNote, các trang con được thụt lề trực quan dưới trang cha của chúng. Thuộc tính page.Level phản ánh cấu trúc lồng nhau này:

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)'}")

Giá trị cấp độ:

  • 0: trang cấp độ cao nhất
  • 1: trang phụ cấp độ một (căn một)
  • 2: trang phụ cấp độ hai (căn hai)

Ghi chú

  • Tất cả các dấu thời gian (CreationTime, LastModifiedTime) là các đối tượng datetime theo UTC khi có.
  • page.Level trả về None cho các trang mà mức độ không được lưu trong định dạng nhị phân. Xử lý None như 0 bằng cách sử dụng page.Level or 0.

Xem thêm

 Tiếng Việt