Comment lire les métadonnées de page depuis OneNote en Python
Les fichiers OneNote .one stockent des métadonnées que vous pouvez lire sans analyser le DOM complet du document. Au niveau document, Document.FileFormat indique quelle variante OneNote le fichier utilise. Au niveau page, chaque Page contient l’auteur, l’horodatage de création, l’horodatage de dernière modification et le niveau hiérarchique. Aspose.Note FOSS for Python expose ces informations via les classes Document et Page.
Prérequis
pip install aspose-noteMétadonnées au niveau du document
L’objet Document expose une propriété de métadonnées :
| Propriété | Type | Description |
|---|---|---|
doc.FileFormat | FileFormat | La variante OneNote : FileFormat.OneNote2010, FileFormat.OneNoteOnline, ou FileFormat.Unknown. |
from aspose.note import Document
doc = Document("MyNotes.one")
print(f"File format: {doc.FileFormat}")Métadonnées au niveau de la page
Chaque objet Page contient :
| Propriété | Type | Description |
|---|---|---|
page.Author | str | None | Le nom d’affichage de l’utilisateur qui a créé ou possède la page. |
page.CreationTime | datetime | None | Lorsque la page a été créée. Retourne un objet Python datetime en UTC. |
page.LastModifiedTime | datetime | None | Lorsque la page a été modifiée pour la dernière fois. |
page.Level | int | None | Niveau d’indentation de la sous-page. 0 = page de niveau supérieur, 1 = sous-page de premier niveau, 2 = deuxième niveau, etc. |
Étape 1 : Lire les métadonnées de chaque page
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 : Rapport de métadonnées
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")Détection des sous-pages
Dans OneNote, les sous‑pages sont visuellement indentées sous leur page parente. La propriété page.Level reflète cette imbrication :
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)'}")Valeurs de niveau :
0: page de niveau supérieur1: sous-page de premier niveau (une indentation)2: sous-page de deuxième niveau (deux indentations)
Notes
- Tous les horodatages (
CreationTime,LastModifiedTime) sont des objetsdatetimeen UTC lorsqu’ils sont présents. page.LevelrenvoieNonepour les pages où le niveau n’a pas été stocké dans le format binaire. TraitezNonecomme0en utilisantpage.Level or 0.