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

OneNote .one Los archivos almacenan metadatos que puedes leer sin analizar el DOM completo del documento. En el documento nivel, Document.FileFormat te indica qué variante de OneNote usa el archivo. En el página nivel, cada Page contiene 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 para Python expone estos a través del Document y Page clases.


Requisitos previos

pip install aspose-note

Metadatos a nivel de documento

El Document objeto 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 Page el objeto contiene:

PropiedadTipoDescripción
page.Author`strNone`
page.CreationTime`datetimeNone`
page.LastModifiedTime`datetimeNone`
page.Level`intNone`

Paso 1: Leer los 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. El page.Level propiedad 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

  • Todas las marcas de tiempo (CreationTime, LastModifiedTime) datetime objetos 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