Jak odczytać metadane strony z OneNote w Python

Jak odczytać metadane strony z OneNote w Python

OneNote .one pliki przechowują metadane, które możesz odczytać bez parsowania pełnego DOM dokumentu. Na dokument poziomie, Document.FileFormat informuje, którego wariantu OneNote używa plik. Na stronie poziomie, każdy Page zawiera autora, znacznik czasu utworzenia, znacznik czasu ostatniej modyfikacji oraz poziom hierarchii. Aspose.Note FOSS dla Python udostępnia je poprzez Document oraz Page klasy.


Wymagania wstępne

pip install aspose-note

Metadane na poziomie dokumentu

Ten Document obiekt udostępnia jedną właściwość metadanych:

WłaściwośćTypOpis
doc.FileFormatFileFormatWariant OneNote: FileFormat.OneNote2010, FileFormat.OneNoteOnline, lub FileFormat.Unknown.
from aspose.note import Document

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

Metadane na poziomie strony

Każdy Page obiekt zawiera:

WłaściwośćTypOpis
page.Author`strNone`
page.CreationTime`datetimeNone`
page.LastModifiedTime`datetimeNone`
page.Level`intNone`

Krok 1: Odczytaj metadane dla każdej strony

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

Pełny przykład: Raport metadanych

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

Wykrywanie podstron

W OneNote podstrony są wizualnie wcięte pod swoją stroną nadrzędną. The page.Level właściwość odzwierciedla to zagnieżdżenie:

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

Wartości poziomu:

  • 0: strona najwyższego poziomu
  • 1: podstrona pierwszego poziomu (jedno wcięcie)
  • 2:podstrona drugiego poziomu (dwa wcięcia)

Notatki

  • Wszystkie znaczniki czasu (CreationTime, LastModifiedTime) datetime obiekty w UTC, gdy są obecne.
  • page.Level zwraca None dla stron, w których poziom nie został zapisany w formacie binarnym. Traktuj None jako 0 używając page.Level or 0.

Zobacz także

 Polski