Kako pročitati metapodatke stranice iz OneNotea u Pythonu

Kako pročitati metapodatke stranice iz OneNotea u Pythonu

OneNote .one datoteke pohranjuju metapodatke koje možete pročitati bez parsiranja cijelog DOM‑a dokumenta. Na razini dokumenta, Document.FileFormat vam govori koju OneNote varijantu datoteka koristi. Na razini stranice, svaki Page sadrži autora, vremensku oznaku stvaranja, vremensku oznaku posljednje izmjene i razinu hijerarhije. Aspose.Note FOSS for Python izlaže to putem klasa Document i Page.


Preduvjeti

pip install aspose-note

Metapodaci na razini dokumenta

Objekt Document izlaže jedno svojstvo metapodataka:

SvojstvoTipOpis
doc.FileFormatFileFormatVarijanta OneNotea: FileFormat.OneNote2010, FileFormat.OneNoteOnline ili FileFormat.Unknown.
from aspose.note import Document

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

Metapodaci na razini stranice

Svaki Page objekt sadrži:

PropertyTypeDescription
page.Authorstr | NonePrikazano ime korisnika koji je stvorio ili je vlasnik stranice.
page.CreationTimedatetime | NoneKada je stranica stvorena. Vraća Python datetime objekt u UTC.
page.LastModifiedTimedatetime | NoneKada je stranica zadnji put izmijenjena.
page.Levelint | NoneRazina uvlake podstranice. 0 = stranica najviše razine, 1 = podstranica prve razine, 2 = podstranica druge razine, itd.

Korak 1: Pročitaj metapodatke za svaku stranicu

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

Kompletan primjer: Izvješće o metapodacima

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

Otkrivanje podstranica

U OneNoteu, podstranice su vizualno uvučene ispod svoje nadređene stranice. Svojstvo page.Level odražava ovo ugniježđivanje:

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 values:

  • 0: stranica najviše razine
  • 1: podstranica prve razine (jedno uvlačenje)
  • 2: podstranica druge razine (dva uvlačenja)

Bilješke

  • Svi vremenski žigovi (CreationTime, LastModifiedTime) su datetime objekti u UTC kada su prisutni.
  • page.Level vraća None za stranice gdje razina nije pohranjena u binarnom formatu. Smatrajte None kao 0 koristeći page.Level or 0.

Vidi također

 Hrvatski