Jak odczytać metadane strony z OneNote w Python
OneNote .one pliki przechowują metadane, które możesz odczytać bez parsowania pełnego DOM dokumentu. Na dokument poziomie, Document.FileFormat informuje, którego wariantu OneNote używa plik. Na stronie poziomie, każdy Page zawiera autora, znacznik czasu utworzenia, znacznik czasu ostatniej modyfikacji oraz poziom hierarchii. Aspose.Note FOSS dla Python udostępnia je poprzez Document oraz Page klasy.
Wymagania wstępne
pip install aspose-noteMetadane na poziomie dokumentu
Ten Document obiekt 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 Page obiekt zawiera:
| Właściwość | Typ | Opis |
|---|---|---|
page.Author | `str | None` |
page.CreationTime | `datetime | None` |
page.LastModifiedTime | `datetime | None` |
page.Level | `int | None` |
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ą. The page.Level właściwość 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 poziomu:
0: strona najwyższego poziomu1: podstrona pierwszego poziomu (jedno wcięcie)2:podstrona drugiego poziomu (dwa wcięcia)
Notatki
- Wszystkie znaczniki czasu (
CreationTime,LastModifiedTime)datetimeobiekty w UTC, gdy są obecne. page.LevelzwracaNonedla stron, w których poziom nie został zapisany w formacie binarnym. TraktujNonejako0używającpage.Level or 0.