Cum să citiți metadatele paginii din OneNote în Python

Cum să citiți metadatele paginii din OneNote în Python

Fișierele OneNote .one stochează metadate pe care le poți citi fără a parcurge întregul DOM al documentului. La nivelul documentului, Document.FileFormat îți spune ce variantă OneNote folosește fișierul. La nivelul paginii, fiecare Page conține autorul, data și ora creării, data și ora ultimei modificări și nivelul ierarhic. Aspose.Note FOSS pentru Python expune acestea prin clasele Document și Page.


Cerințe preliminare

pip install aspose-note

Metadate la nivel de document

Obiectul Document expune o proprietate de metadate:

ProprietateTipDescriere
doc.FileFormatFileFormatVarianta OneNote: FileFormat.OneNote2010, FileFormat.OneNoteOnline sau FileFormat.Unknown.
from aspose.note import Document

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

Metadate la nivel de pagină

Fiecare obiect Page conține:

PropertyTypeDescription
page.Authorstr | NoneNumele afișat al utilizatorului care a creat sau deține pagina.
page.CreationTimedatetime | NoneCând a fost creată pagina. Returnează un obiect Python datetime în UTC.
page.LastModifiedTimedatetime | NoneCând a fost ultima modificare a paginii.
page.Levelint | NoneNivelul de indentare al subpaginii. 0 = pagină de nivel superior, 1 = subpagină de primul nivel, 2 = al doilea nivel, etc.

Pasul 1: Citește metadatele pentru fiecare pagină

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

Exemplu complet: Raport de metadate

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

Detectarea sub-paginilor

În OneNote, sub-paginile sunt indentate vizual sub pagina părinte. Proprietatea page.Level reflectă această imbricare:

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

Valori de nivel:

  • 0: pagină de nivel superior
  • 1: subpagină de prim nivel (o indentare)
  • 2: subpagină de al doilea nivel (două indentări)

Note

  • Toate marcajele de timp (CreationTime, LastModifiedTime) sunt obiecte datetime în UTC când sunt prezente.
  • page.Level returnează None pentru paginile în care nivelul nu a fost stocat în formatul binar. Tratați None ca 0 utilizând page.Level or 0.

Vezi și

 Română