چگونه متادیتای صفحه را از OneNote با پایتون بخوانیم
OneNote .one فایلها متادیتایی ذخیره میکنند که میتوانید بدون تجزیه کامل DOM سند آن را بخوانید. در سطح document، Document.FileFormat به شما میگوید که فایل از کدام نسخه OneNote استفاده میکند. در سطح page، هر Page شامل نویسنده، زمان ایجاد، زمان آخرین تغییر و سطح سلسلهمراتبی است. Aspose.Note FOSS برای Python این موارد را از طریق کلاسهای Document و Page در دسترس قرار میدهد.
پیشنیازها
pip install aspose-noteمتادیتای سطح سند
شیء Document یک ویژگی متادیتا را در دسترس قرار میدهد:
| ویژگی | نوع | توضیح |
|---|---|---|
doc.FileFormat | FileFormat | گونه OneNote: FileFormat.OneNote2010، FileFormat.OneNoteOnline یا FileFormat.Unknown. |
from aspose.note import Document
doc = Document("MyNotes.one")
print(f"File format: {doc.FileFormat}")متادیتای سطح صفحه
هر شیء Page دارای:
| ویژگی | نوع | توضیح |
|---|---|---|
page.Author | str | None | نام نمایشی کاربری که صفحه را ایجاد کرده یا مالک آن است. |
page.CreationTime | datetime | None | زمان ایجاد صفحه. یک شیء Python datetime در زمان UTC برمیگرداند. |
page.LastModifiedTime | datetime | None | زمان آخرین ویرایش صفحه. |
page.Level | int | 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در نظر بگیرید.