Come leggere i metadati della pagina da OneNote in Python
I file OneNote .one memorizzano metadati che è possibile leggere senza analizzare l’intero DOM del documento. A livello di documento, Document.FileFormat indica quale variante di OneNote utilizza il file. A livello di pagina, ogni Page contiene l’autore, il timestamp di creazione, il timestamp dell’ultima modifica e il livello gerarchico. Aspose.Note FOSS for Python espone questi tramite le classi Document e Page.
Prerequisiti
pip install aspose-noteMetadati a livello di documento
L’oggetto Document espone una proprietà di metadati:
| Proprietà | Tipo | Descrizione |
|---|---|---|
doc.FileFormat | FileFormat | La variante OneNote: FileFormat.OneNote2010, FileFormat.OneNoteOnline, o FileFormat.Unknown. |
from aspose.note import Document
doc = Document("MyNotes.one")
print(f"File format: {doc.FileFormat}")Metadati a livello di pagina
Ogni oggetto Page contiene:
| Property | Type | Description |
|---|---|---|
page.Author | str | None | Il nome visualizzato dell’utente che ha creato o possiede la pagina. |
page.CreationTime | datetime | None | Quando è stata creata la pagina. Restituisce un oggetto Python datetime in UTC. |
page.LastModifiedTime | datetime | None | Quando la pagina è stata modificata l’ultima volta. |
page.Level | int | None | Livello di rientro della sottopagina. 0 = pagina di livello superiore, 1 = sottopagina di primo livello, 2 = secondo livello, ecc. |
Passo 1: Leggi i metadati per ogni pagina
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}")Esempio completo: Rapporto sui metadati
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")Rilevamento delle sottopagine
In OneNote, le sotto‑pagine sono visualmente rientrate sotto la loro pagina genitore. La proprietà page.Level riflette questa nidificazione:
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)'}")Valori di livello:
0: pagina di livello superiore1: sottopagina di primo livello (un rientro)2: sottopagina di secondo livello (due rientri)
Note
- Tutti i timestamp (
CreationTime,LastModifiedTime) sono oggettidatetimein UTC quando presenti. page.LevelrestituisceNoneper le pagine in cui il livello non è stato memorizzato nel formato binario. TrattareNonecome0usandopage.Level or 0.