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

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

OneNote .one файловете съхраняват метаданни, които можете да прочетете без да парсирате целия DOM на документа. На ниво документ, Document.FileFormat ви казва кой вариант на OneNote използва файлът. На ниво страница, всеки Page съдържа автора, времевия маркер за създаване, времевия маркер за последна промяна и нивото на йерархия. Aspose.Note FOSS for 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.Authorstr | NoneПоказваното име на потребителя, който е създал или притежава страницата.
page.CreationTimedatetime | NoneКога е създадена страницата. Връща Python datetime обект в UTC.
page.LastModifiedTimedatetime | NoneКога страницата е последно променена.
page.Levelint | NoneНиво на отстъп за подстраница. 0 = страница от най-горно ниво, 1 = подстраница от първо ниво, 2 = подстраница от второ ниво и т.н.

Стъпка 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.

Вижте също

 Български