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-noteMetadatos a nivel de documento
El Document objeto 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 Page el objeto contiene:
| Propiedad | Tipo | Descripción |
|---|---|---|
page.Author | `str | None` |
page.CreationTime | `datetime | None` |
page.LastModifiedTime | `datetime | None` |
page.Level | `int | None` |
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 superior1: 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)datetimeobjetos en UTC cuando están presentes. page.LeveldevuelveNonepara páginas donde el nivel no se almacenó en el formato binario. TrateNonecomo0usandopage.Level or 0.