Cómo leer los metadatos de la página de OneNote en Python

Cómo leer los metadatos de la página de OneNote en Python

Los archivos OneNote .one almacenan metadatos que puedes leer sin analizar el DOM completo del documento. A nivel de documento, Document.FileFormat indica qué variante de OneNote usa el archivo. A nivel de página, cada Page lleva el autor, la marca de tiempo de creación, la marca de tiempo de última modificación y el nivel de jerarquía. Aspose.Note FOSS for Python expone estos a través de las clases Document y Page.


Requisitos

pip install aspose-note

Metadatos a nivel de documento

El objeto Document expone una propiedad de metadatos:

PropiedadTipoDescripción
doc.FileFormatFileFormatLa variante de OneNote: FileFormat.OneNote2010, FileFormat.OneNoteOnline, o FileFormat.Unknown.
from aspose.note import Document

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

Metadatos a nivel de página

Cada objeto Page contiene:

PropertyTypeDescription
page.Authorstr | NoneEl nombre para mostrar del usuario que creó o es propietario de la página.
page.CreationTimedatetime | NoneCuándo se creó la página. Devuelve un objeto Python datetime en UTC.
page.LastModifiedTimedatetime | NoneCuándo se modificó por última vez la página.
page.Levelint | NoneNivel de sangría de la subpágina. 0 = página de nivel superior, 1 = subpágina de primer nivel, 2 = segundo nivel, etc.

Paso 1: Leer metadatos 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}")

Ejemplo completo: informe de metadatos

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ón de subpáginas

En OneNote, las subpáginas se sangran visualmente bajo su página principal. La propiedad page.Level refleja esta jerarquía:

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

Valores de nivel:

  • 0: página de nivel superior
  • 1: subpágina de primer nivel (una sangría)
  • 2: subpágina de segundo nivel (dos sangrías)

Notas

  • Todos los timestamps (CreationTime, LastModifiedTime) son objetos datetime en UTC cuando están presentes.
  • page.Level devuelve None para páginas donde el nivel no se almacenó en el formato binario. Trate None como 0 usando page.Level or 0.

Ver también

 Español