Jak načíst metadata stránky z OneNote v Pythonu

Jak načíst metadata stránky z OneNote v Pythonu

OneNote .one soubory ukládají metadata, která můžete číst bez parsování celého DOM dokumentu. Na úrovni document Document.FileFormat vám říká, kterou variantu OneNote soubor používá. Na úrovni page každý Page obsahuje autora, časové razítko vytvoření, časové razítko poslední úpravy a úroveň hierarchie. Aspose.Note FOSS pro Python tyto informace zpřístupňuje prostřednictvím tříd Document a Page.


Požadavky

pip install aspose-note

Metadata na úrovni dokumentu

Objekt Document poskytuje jednu vlastnost metadat:

VlastnostTypPopis
doc.FileFormatFileFormatVarianta OneNote: FileFormat.OneNote2010, FileFormat.OneNoteOnline nebo FileFormat.Unknown.
from aspose.note import Document

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

Metadata na úrovni stránky

Každý objekt Page obsahuje:

PropertyTypeDescription
page.Authorstr | NoneZobrazované jméno uživatele, který stránku vytvořil nebo je jejím vlastníkem.
page.CreationTimedatetime | NoneKdy byla stránka vytvořena. Vrací objekt Python datetime v UTC.
page.LastModifiedTimedatetime | NoneKdy byla stránka naposledy upravena.
page.Levelint | NoneÚroveň odsazení podstránky. 0 = stránka nejvyšší úrovně, 1 = podstránka první úrovně, 2 = druhá úroveň atd.

Krok 1: Přečíst metadata pro každou 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í příklad: Zpráva o metadatech

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

Detekce podstránek

V OneNote jsou podstránky vizuálně odsazeny pod svou nadřazenou stránkou. Vlastnost page.Level odráží toto vnoření:

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: stránka nejvyšší úrovně
  • 1: podstránka první úrovně (jedno odsazení)
  • 2: podstránka druhé úrovně (dvě odsazení)

Poznámky

  • Všechny časové razítka (CreationTime, LastModifiedTime) jsou datetime objekty v UTC, pokud jsou přítomny.
  • page.Level vrací None pro stránky, kde úroveň nebyla uložena v binárním formátu. Považujte None za 0 pomocí page.Level or 0.

Viz také

 Čeština