Wie man Seiten‑Metadaten aus OneNote in Python liest

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-note

Dokumentenebene-Metadaten

Das Document‑Objekt stellt eine Metadaten‑Eigenschaft bereit:

EigenschaftTypBeschreibung
doc.FileFormatFileFormatDie 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:

PropertyTypeDescription
page.Authorstr | NoneDer Anzeigename des Benutzers, der die Seite erstellt hat oder ihr gehört.
page.CreationTimedatetime | NoneWann die Seite erstellt wurde. Gibt ein Python datetime‑Objekt in UTC zurück.
page.LastModifiedTimedatetime | NoneWann die Seite zuletzt geändert wurde.
page.Levelint | NoneEinzugsebene 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 Ebene
  • 1: Unterseite der ersten Ebene (einrückung)
  • 2: Unterseite der zweiten Ebene (zwei Einrückungen)

Hinweise

  • Alle Zeitstempel (CreationTime, LastModifiedTime) sind datetime‑Objekte in UTC, wenn vorhanden.
  • page.Level gibt None für Seiten zurück, bei denen das Level nicht im Binärformat gespeichert wurde. Behandle None als 0 unter Verwendung von page.Level or 0.

Siehe auch

 Deutsch