Com llegir les metadades de la pàgina de OneNote amb Python

Com llegir les metadades de la pàgina de OneNote amb Python

Els fitxers OneNote .one emmagatzemen metadades que podeu llegir sense analitzar tot el DOM del document. A nivell de document, Document.FileFormat us indica quina variant de OneNote utilitza el fitxer. A nivell de pàgina, cada Page conté l’autor, la marca de temps de creació, la marca de temps de l’última modificació i el nivell de jerarquia. Aspose.Note FOSS for Python exposa aquests a través de les classes Document i Page.


Requisits previs

pip install aspose-note

Metadades a nivell de document

L’objecte Document exposa una propietat de metadades:

PropietatTipusDescripció
doc.FileFormatFileFormatLa variant de OneNote: FileFormat.OneNote2010, FileFormat.OneNoteOnline, o FileFormat.Unknown.
from aspose.note import Document

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

Metadades a nivell de pàgina

Cada objecte Page conté:

PropertyTypeDescription
page.Authorstr | NoneEl nom per mostrar de l’usuari que va crear o que posseeix la pàgina.
page.CreationTimedatetime | NoneQuan es va crear la pàgina. Retorna un objecte Python datetime en UTC.
page.LastModifiedTimedatetime | NoneQuan es va modificar per última vegada la pàgina.
page.Levelint | NoneNivell d’indentació de la subpàgina. 0 = pàgina de nivell superior, 1 = subpàgina de primer nivell, 2 = segon nivell, etc.

Pas 1: Llegir les metadades de cada pàgina

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

Exemple complet: Informe de metadades

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

Detecció de subpàgines

A OneNote, les subpàgines s’indenten visualment sota la seva pàgina pare. La propietat page.Level reflecteix aquest anidament:

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

Valors de nivell:

  • 0: pàgina de nivell superior
  • 1: subpàgina de primer nivell (una indentació)
  • 2: subpàgina de segon nivell (dues indentacions)

Notes

  • Tots els timestamps (CreationTime, LastModifiedTime) són objectes datetime en UTC quan estan presents.
  • page.Level retorna None per a pàgines on el nivell no es va emmagatzemar en el format binari. Tracta None com a 0 utilitzant page.Level or 0.

Vegeu també

 Català