Comment lire les métadonnées de page depuis OneNote dans Python
OneNote .one les fichiers stockent des metadata que vous pouvez lire sans analyser le DOM complet du document. À la document niveau, Document.FileFormat vous indique quelle variante de OneNote le fichier utilise. À la page niveau, chaque Page contient l’auteur, l’horodatage de création, l’horodatage de dernière modification et le niveau hiérarchique. Aspose.Note FOSS pour Python expose ceux-ci via le Document et Page classes.
Prérequis
pip install aspose-noteMétadonnées au niveau du document
Le Document objet expose une propriété de metadata :
| 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 Page l’objet porte :
| Propriété | Type | Description |
|---|---|---|
page.Author | `str | None` |
page.CreationTime | `datetime | None` |
page.LastModifiedTime | `datetime | None` |
page.Level | `int | None` |
É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. Le page.Level propriété reflète cette hiérarchie :
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 retraits)
Notes
- Tous les horodatages (
CreationTime,LastModifiedTime) sontdatetimeobjets en UTC lorsqu’ils sont présents. page.LevelrenvoieNonepour les pages où le niveau n’était pas stocké dans le format binaire. TraiterNonecomme0en utilisantpage.Level or 0.