Come leggere i metadati della pagina da OneNote in Python

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

Metadati a livello di documento

L’oggetto Document espone una proprietà di metadati:

ProprietàTipoDescrizione
doc.FileFormatFileFormatLa 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:

PropertyTypeDescription
page.Authorstr | NoneIl nome visualizzato dell’utente che ha creato o possiede la pagina.
page.CreationTimedatetime | NoneQuando è stata creata la pagina. Restituisce un oggetto Python datetime in UTC.
page.LastModifiedTimedatetime | NoneQuando la pagina è stata modificata l’ultima volta.
page.Levelint | NoneLivello 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 superiore
  • 1: sottopagina di primo livello (un rientro)
  • 2: sottopagina di secondo livello (due rientri)

Note

  • Tutti i timestamp (CreationTime, LastModifiedTime) sono oggetti datetime in UTC quando presenti.
  • page.Level restituisce None per le pagine in cui il livello non è stato memorizzato nel formato binario. Trattare None come 0 usando page.Level or 0.

Vedi anche

 Italiano