Как да прочетете метаданни на страница от OneNote в Python

Как да прочетете метаданни на страница от OneNote в Python

OneNote .one файловете съхраняват метаданни, които можете да прочетете без да парсирате пълния DOM на документа. На документ ниво, Document.FileFormat казва ви коя версия на OneNote използва файлът. На страница ниво, всяка Page съдържа автора, времевия маркер за създаване, времевия маркер за последна промяна и нивото на йерархията. Aspose.Note FOSS за Python излага тези данни чрез Document и Page класове.


Предварителни изисквания

pip install aspose-note

Метаданни на ниво документ

Това Document обектът разкрива едно свойство за метаданни:

СвойствоТипОписание
doc.FileFormatFileFormatВариантът OneNote: FileFormat.OneNote2010, FileFormat.OneNoteOnline, или FileFormat.Unknown.
from aspose.note import Document

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

Метаданни на ниво страница

Всеки Page обектът съдържа:

СвойствоТипОписание
page.Author`strNone`
page.CreationTime`datetimeNone`
page.LastModifiedTime`datetimeNone`
page.Level`intNone`

Стъпка 1: Прочетете метаданните за всяка страница

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

Пълен пример: Отчет за метаданни

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

Откриване на подпраници

В OneNote подстраниците са визуално отстъпени под родителската страница. Свойството page.Level отразява това вложение:

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

Стойности на нивото:

  • 0: главна страница
  • 1: подстраница от първо ниво (един отстъп)
  • 2: подстраница от второ ниво (два отстъпа)

Бележки

  • Всички времеви отметки (CreationTime, LastModifiedTime) са datetime обекти в UTC, когато са налични.
  • page.Level връща None за страници, при които нивото не е съхранено в бинарния формат. Третирайте None като 0 използвайки page.Level or 0.

Вижте също

 Български