Hoe paginametagegevens van OneNote lezen in Python

Hoe paginametagegevens van OneNote lezen in Python

OneNote .one-bestanden slaan metadata op die je kunt lezen zonder de volledige document‑DOM te parseren. Op document-niveau geeft Document.FileFormat aan welke OneNote-variant het bestand gebruikt. Op page-niveau bevat elk Page de auteur, aanmaak‑tijdstempel, laatst‑gewijzigde tijdstempel en hiërarchisch niveau. Aspose.Note FOSS voor Python maakt deze beschikbaar via de Document- en Page-klassen.


Voorvereisten

pip install aspose-note

Documentniveau-metadata

Het Document-object stelt één metagegeven‑eigenschap beschikbaar:

EigenschapTypeBeschrijving
doc.FileFormatFileFormatDe OneNote-variant: FileFormat.OneNote2010, FileFormat.OneNoteOnline, of FileFormat.Unknown.
from aspose.note import Document

doc = Document("MyNotes.one")
print(f"File format: {doc.FileFormat}")

Pagina‑niveau‑metadata

Elk Page object bevat:

PropertyTypeDescription
page.Authorstr | NoneDe weergavenaam van de gebruiker die de pagina heeft aangemaakt of bezit.
page.CreationTimedatetime | NoneWanneer de pagina is aangemaakt. Retourneert een Python datetime object in UTC.
page.LastModifiedTimedatetime | NoneWanneer de pagina voor het laatst is gewijzigd.
page.Levelint | NoneInspringniveau van subpagina. 0 = topniveaupagina, 1 = subpagina van eerste niveau, 2 = tweede niveau, enz.

Stap 1: Metagegevens lezen voor elke pagina

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}")

Volledig voorbeeld: Metadata-rapport

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")

Detecteren van subpagina’s

In OneNote worden subpagina’s visueel ingesprongen onder hun bovenliggende pagina. De page.Level‑eigenschap weerspiegelt deze hiërarchie:

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)'}")

Niveauwaarden:

  • 0: pagina op het hoogste niveau
  • 1: subpagina van het eerste niveau (één inspringing)
  • 2: subpagina van het tweede niveau (twee inspringingen)

Notities

  • Alle tijdstempels (CreationTime, LastModifiedTime) zijn datetime objecten in UTC wanneer aanwezig.
  • page.Level retourneert None voor pagina’s waar het niveau niet is opgeslagen in het binaire formaat. Behandel None als 0 met behulp van page.Level or 0.

Zie ook

 Nederlands