Jak odczytać metadane strony z OneNote w Pythonie
Pliki OneNote .one przechowują metadane, które możesz odczytać bez parsowania pełnego DOM dokumentu. Na poziomie dokumentu Document.FileFormat informuje, którego wariantu OneNote używa plik. Na poziomie strony każdy Page zawiera autora, znacznik czasu utworzenia, znacznik czasu ostatniej modyfikacji oraz poziom hierarchii. Aspose.Note FOSS for Python udostępnia je poprzez klasy Document i Page.
Wymagania wstępne
pip install aspose-noteMetadane na poziomie dokumentu
Obiekt Document udostępnia jedną właściwość metadanych:
| Właściwość | Typ | Opis |
|---|---|---|
doc.FileFormat | FileFormat | Wariant OneNote: FileFormat.OneNote2010, FileFormat.OneNoteOnline lub FileFormat.Unknown. |
from aspose.note import Document
doc = Document("MyNotes.one")
print(f"File format: {doc.FileFormat}")Metadane na poziomie strony
Każdy obiekt Page zawiera:
| Property | Type | Description |
|---|---|---|
page.Author | str | None | Wyświetlana nazwa użytkownika, który utworzył lub jest właścicielem strony. |
page.CreationTime | datetime | None | Kiedy strona została utworzona. Zwraca obiekt Pythona datetime w UTC. |
page.LastModifiedTime | datetime | None | Kiedy strona została ostatnio zmodyfikowana. |
page.Level | int | None | Poziom wcięcia podstrony. 0 = strona najwyższego poziomu, 1 = podstrona pierwszego poziomu, 2 = podstrona drugiego poziomu, itp. |
Krok 1: Odczytaj metadane dla każdej strony
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}")Pełny przykład: Raport metadanych
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")Wykrywanie podstron
W OneNote podstrony są wizualnie wcięte pod swoją stroną nadrzędną. Właściwość page.Level odzwierciedla to zagnieżdżenie:
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)'}")Wartości poziomów:
0: strona najwyższego poziomu1: podstrona pierwszego poziomu (jedno wcięcie)2: podstrona drugiego poziomu (dwa wcięcia)
Notatki
- Wszystkie znaczniki czasu (
CreationTime,LastModifiedTime) są obiektamidatetimew UTC, gdy są obecne. page.LevelzwracaNonedla stron, w których poziom nie został zapisany w formacie binarnym. TraktujNonejako0przy użyciupage.Level or 0.