Как да прочетете метаданните на страница от OneNote с Python
OneNote .one файловете съхраняват метаданни, които можете да прочетете без да парсирате целия DOM на документа. На ниво документ, Document.FileFormat ви казва кой вариант на OneNote използва файлът. На ниво страница, всеки Page съдържа автора, времевия маркер за създаване, времевия маркер за последна промяна и нивото на йерархия. Aspose.Note FOSS for 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.