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

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

Métadonnées au niveau du document

L’objet Document expose une propriété de métadonnées :

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 objet Page contient :

PropriétéTypeDescription
page.Authorstr | NoneLe nom d’affichage de l’utilisateur qui a créé ou possède la page.
page.CreationTimedatetime | NoneLorsque la page a été créée. Retourne un objet Python datetime en UTC.
page.LastModifiedTimedatetime | NoneLorsque la page a été modifiée pour la dernière fois.
page.Levelint | NoneNiveau 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érieur
  • 1 : sous-page de premier niveau (une indentation)
  • 2 : sous-page de deuxième niveau (deux indentations)

Notes

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

Voir aussi

 Français