Cum să citești metadatele paginii din OneNote în Python

Cum să citești metadatele paginii din OneNote în Python

OneNote .one fișierele stochează metadata pe care le poți citi fără a parsa întregul DOM al documentului. La document nivel, Document.FileFormat îți spune ce variantă OneNote folosește fișierul. La pagină nivel, 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 Document și Page clasele.


Precondiții

pip install aspose-note

Metadate la nivel de document

Obiectul Document expune o proprietate de metadata:

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 Page obiect conține:

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

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. Această page.Level proprietatea 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 ale nivelului:

  • 0: pagină de nivel superior
  • 1: sub-pagină de nivelul întâi (o indentare)
  • 2: sub-pagină de al doilea nivel (două indentări)

Note

  • Toate marcajele de timp (CreationTime, LastModifiedTime) sunt datetime obiecte î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 folosind page.Level or 0.

Vezi și

 Română