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

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

OneNote .one files 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. Tại tài liệu cấp độ, Document.FileFormat cho bạn biết OneNote biến thể nào mà file sử dụng. Tại trang cấp độ, mỗi Page có 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 cho Python công khai những thông tin này qua DocumentPage các lớp.


Yêu cầu trước

pip install aspose-note

Siêu Dữ Liệu Cấp Độ Tài Liệu

Cái Document đối tượng 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}")

Siêu Dữ Liệu Cấp Độ Trang

Mỗi Page đối tượng mang:

Thuộc tínhKiểuMô tả
page.Author`strNone`
page.CreationTime`datetimeNone`
page.LastModifiedTime`datetimeNone`
page.Level`intNone`

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ụ Hoàn Chỉnh: 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 Con

Trong OneNote, các trang con được thụt lề trực quan dưới trang cha của chúng. The page.Level thuộc tính 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 con cấp một (căn lề một)
  • 2:trang con cấp hai (hai lần căn lề)

Ghi chú

  • Tất cả các dấu thời gian (CreationTime, LastModifiedTime) là datetime các đối tượng ở 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 sử dụng page.Level or 0.

Xem thêm

 Tiếng Việt