Hur man läser sidmetadata från OneNote i Python

Hur man läser sidmetadata från OneNote i Python

OneNote .one filer lagrar metadata som du kan läsa utan att parsa hela dokumentets DOM. På dokument nivå, Document.FileFormat anger vilken OneNote-variant filen använder. På sida nivå, varje Page bär med sig författaren, skapelsestidsstämpeln, senast ändrad tidsstämpel och hierarkinivå. Aspose.Note FOSS för Python exponerar dessa via Document och Page klasser.


Förutsättningar

pip install aspose-note

Metadata på dokumentnivå

Den Document objektet exponerar en metadataegenskap:

EgenskapTypBeskrivning
doc.FileFormatFileFormatOneNote-varianten: FileFormat.OneNote2010, FileFormat.OneNoteOnline, eller FileFormat.Unknown.
from aspose.note import Document

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

Metadata på sidnivå

Varje Page objektet bär:

EgenskapTypBeskrivning
page.Author`strNone`
page.CreationTime`datetimeNone`
page.LastModifiedTime`datetimeNone`
page.Level`intNone`

Steg 1: Läs metadata för varje sida

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

Fullständigt exempel: Metadatrapport

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

Detektera undersidor

I OneNote är undersidor visuellt indenterade under sin föräldrasida. Den page.Level egenskapen återspeglar denna nästning:

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

Värden för nivå:

  • 0: toppnivåssida
  • 1: första nivåns undersida (en indragning)
  • 2: andra nivåns undersida (två indragningar)

Anteckningar

  • Alla tidsstämplar (CreationTime, LastModifiedTime) är datetime objekt i UTC när de finns.
  • page.Level returnerar None för sidor där nivån inte lagrades i det binära formatet. Behandla None som 0 använder page.Level or 0.

Se även

 Svenska