Jak odczytać metadane strony z OneNote w Pythonie

Jak odczytać metadane strony z OneNote w Pythonie

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


Wymagania wstępne

pip install aspose-note

Metadane na poziomie dokumentu

Obiekt Document 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 obiekt Page zawiera:

PropertyTypeDescription
page.Authorstr | NoneWyświetlana nazwa użytkownika, który utworzył lub jest właścicielem strony.
page.CreationTimedatetime | NoneKiedy strona została utworzona. Zwraca obiekt Pythona datetime w UTC.
page.LastModifiedTimedatetime | NoneKiedy strona została ostatnio zmodyfikowana.
page.Levelint | NonePoziom wcięcia podstrony. 0 = strona najwyższego poziomu, 1 = podstrona pierwszego poziomu, 2 = podstrona drugiego poziomu, itp.

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ą. Właściwość page.Level 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 poziomów:

  • 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) są obiektami datetime 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 przy użyciu page.Level or 0.

Zobacz także

 Polski