Wie man Seiten‑Metadaten aus OneNote in Python liest
OneNote .one Dateien speichern Metadaten, die Sie lesen können, ohne das gesamte Dokument‑DOM zu parsen. Auf der Dokument‑Ebene gibt Document.FileFormat an, welche OneNote‑Variante die Datei verwendet. Auf der Seite‑Ebene enthält jedes Page den Autor, den Erstellungszeitstempel, den zuletzt geänderten Zeitstempel und die Hierarchieebene. Aspose.Note FOSS für Python stellt diese über die Klassen Document und Page bereit.
Voraussetzungen
pip install aspose-noteDokumentenebene-Metadaten
Das Document‑Objekt stellt eine Metadaten‑Eigenschaft bereit:
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
doc.FileFormat | FileFormat | Die OneNote-Variante: FileFormat.OneNote2010, FileFormat.OneNoteOnline oder FileFormat.Unknown. |
from aspose.note import Document
doc = Document("MyNotes.one")
print(f"File format: {doc.FileFormat}")Seitenbezogene Metadaten
Jedes Page‑Objekt enthält:
| Property | Type | Description |
|---|---|---|
page.Author | str | None | Der Anzeigename des Benutzers, der die Seite erstellt hat oder ihr gehört. |
page.CreationTime | datetime | None | Wann die Seite erstellt wurde. Gibt ein Python datetime‑Objekt in UTC zurück. |
page.LastModifiedTime | datetime | None | Wann die Seite zuletzt geändert wurde. |
page.Level | int | None | Einzugsebene der Unterseite. 0 = Seite auf oberster Ebene, 1 = Unterseite der ersten Ebene, 2 = Unterseite der zweiten Ebene usw. |
Schritt 1: Metadaten für jede Seite lesen
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}")Vollständiges Beispiel: Metadatenbericht
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")Erkennen von Unterseiten
In OneNote werden Unterseiten visuell unter ihrer übergeordneten Seite eingerückt. Die page.Level‑Eigenschaft spiegelt diese Verschachtelung wider:
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)'}")Level‑Werte:
0: Seite der obersten Ebene1: Unterseite der ersten Ebene (einrückung)2: Unterseite der zweiten Ebene (zwei Einrückungen)
Hinweise
- Alle Zeitstempel (
CreationTime,LastModifiedTime) sinddatetime‑Objekte in UTC, wenn vorhanden. page.LevelgibtNonefür Seiten zurück, bei denen das Level nicht im Binärformat gespeichert wurde. BehandleNoneals0unter Verwendung vonpage.Level or 0.