Ako čítať metadáta stránky z OneNote v Pythone

Ako čítať metadáta stránky z OneNote v Pythone

OneNote .one súbory ukladajú metadáta, ktoré môžete čítať bez parsovania celého dokumentu DOM. Na úrovni document Document.FileFormat vám hovorí, ktorú variantu OneNote súbor používa. Na úrovni page každý Page obsahuje autora, časové razítko vytvorenia, časové razítko poslednej úpravy a úroveň hierarchie. Aspose.Note FOSS pre Python tieto exponuje prostredníctvom tried Document a Page.


Požiadavky

pip install aspose-note

Metadáta na úrovni dokumentu

Objekt Document vystavuje jednu metadátovú vlastnosť:

VlastnosťTypPopis
doc.FileFormatFileFormatVarianta OneNote: FileFormat.OneNote2010, FileFormat.OneNoteOnline alebo FileFormat.Unknown.
from aspose.note import Document

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

Metadáta na úrovni stránky

Každý objekt Page obsahuje:

PropertyTypeDescription
page.Authorstr | NoneZobrazované meno používateľa, ktorý stránku vytvoril alebo jej vlastní.
page.CreationTimedatetime | NoneKedy bola stránka vytvorená. Vráti objekt Python datetime v UTC.
page.LastModifiedTimedatetime | NoneKedy bola stránka naposledy upravená.
page.Levelint | NoneÚroveň odsadenia podstránky. 0 = stránka najvyššej úrovne, 1 = podstránka prvej úrovne, 2 = podstránka druhej úrovne, atď.

Krok 1: Prečítajte metadáta pre každú stránku

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

Kompletný príklad: Správa metadát

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

Detekcia podstránok

V OneNote sú podstránky vizuálne odsadené pod ich nadradenú stránku. Vlastnosť page.Level odráža toto vnorenie:

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

Hodnoty úrovní:

  • 0: stránka najvyššej úrovne
  • 1: podstránka prvej úrovne (jedno odsadenie)
  • 2: podstránka druhej úrovne (dve odsadenia)

Poznámky

  • Všetky časové značky (CreationTime, LastModifiedTime) sú datetime objekty v UTC, keď sú prítomné.
  • page.Level vracia None pre stránky, kde úroveň nebola uložená v binárnom formáte. Považujte None za 0 pomocou page.Level or 0.

Pozri tiež

 Slovenčina