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-noteMetadades a nivell de document
L’objecte Document exposa una propietat de metadades:
| Propietat | Tipus | Descripció |
|---|---|---|
doc.FileFormat | FileFormat | La 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é:
| Property | Type | Description |
|---|---|---|
page.Author | str | None | El nom per mostrar de l’usuari que va crear o que posseeix la pàgina. |
page.CreationTime | datetime | None | Quan es va crear la pàgina. Retorna un objecte Python datetime en UTC. |
page.LastModifiedTime | datetime | None | Quan es va modificar per última vegada la pàgina. |
page.Level | int | None | Nivell 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 superior1: subpàgina de primer nivell (una indentació)2: subpàgina de segon nivell (dues indentacions)
Notes
- Tots els timestamps (
CreationTime,LastModifiedTime) són objectesdatetimeen UTC quan estan presents. page.LevelretornaNoneper a pàgines on el nivell no es va emmagatzemar en el format binari. TractaNonecom a0utilitzantpage.Level or 0.