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 Document và Page.
Điều kiện tiên quyết
pip install aspose-noteSiê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ính | Kiểu | Mô tả |
|---|---|---|
doc.FileFormat | FileFormat | Biế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:
| Property | Type | Description |
|---|---|---|
page.Author | str | None | Tên hiển thị của người dùng đã tạo hoặc sở hữu trang. |
page.CreationTime | datetime | None | Thời gian tạo trang. Trả về một đối tượng Python datetime ở múi giờ UTC. |
page.LastModifiedTime | datetime | None | Thời gian trang được sửa đổi lần cuối. |
page.Level | int | None | Mứ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ất1: 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ượngdatetimetheo UTC khi có. page.Leveltrả vềNonecho các trang mà mức độ không được lưu trong định dạng nhị phân. Xử lýNonenhư0bằng cách sử dụngpage.Level or 0.