Comment lire les métadonnées de page depuis OneNote dans Python

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-note

Métadonnées au niveau du document

Le Document objet expose une propriété de metadata :

PropriétéTypeDescription
doc.FileFormatFileFormatLa 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éTypeDescription
page.Author`strNone`
page.CreationTime`datetimeNone`
page.LastModifiedTime`datetimeNone`
page.Level`intNone`

É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érieur
  • 1: sous-page de premier niveau (une indentation)
  • 2: sous-page de deuxième niveau (deux retraits)

Notes

  • Tous les horodatages (CreationTime, LastModifiedTime) sont datetime objets en UTC lorsqu’ils sont présents.
  • page.Level renvoie None pour les pages où le niveau n’était pas stocké dans le format binaire. Traiter None comme 0 en utilisant page.Level or 0.

Voir aussi

 Français