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-noteMetadatos a nivel de documento
El objeto Document expone una propiedad de metadatos:
| Propiedad | Tipo | Descripción |
|---|---|---|
doc.FileFormat | FileFormat | La 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:
| Property | Type | Description |
|---|---|---|
page.Author | str | None | El nombre para mostrar del usuario que creó o es propietario de la página. |
page.CreationTime | datetime | None | Cuándo se creó la página. Devuelve un objeto Python datetime en UTC. |
page.LastModifiedTime | datetime | None | Cuándo se modificó por última vez la página. |
page.Level | int | None | Nivel 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 superior1: subpágina de primer nivel (una sangría)2: subpágina de segundo nivel (dos sangrías)
Notas
- Todos los timestamps (
CreationTime,LastModifiedTime) son objetosdatetimeen UTC cuando están presentes. page.LeveldevuelveNonepara páginas donde el nivel no se almacenó en el formato binario. TrateNonecomo0usandopage.Level or 0.