Cum să citiți metadatele paginii din OneNote în Python
Fișierele OneNote .one stochează metadate pe care le poți citi fără a parcurge întregul DOM al documentului. La nivelul documentului, Document.FileFormat îți spune ce variantă OneNote folosește fișierul. La nivelul paginii, fiecare Page conține autorul, data și ora creării, data și ora ultimei modificări și nivelul ierarhic. Aspose.Note FOSS pentru Python expune acestea prin clasele Document și Page.
Cerințe preliminare
pip install aspose-noteMetadate la nivel de document
Obiectul Document expune o proprietate de metadate:
| Proprietate | Tip | Descriere |
|---|---|---|
doc.FileFormat | FileFormat | Varianta OneNote: FileFormat.OneNote2010, FileFormat.OneNoteOnline sau FileFormat.Unknown. |
from aspose.note import Document
doc = Document("MyNotes.one")
print(f"File format: {doc.FileFormat}")Metadate la nivel de pagină
Fiecare obiect Page conține:
| Property | Type | Description |
|---|---|---|
page.Author | str | None | Numele afișat al utilizatorului care a creat sau deține pagina. |
page.CreationTime | datetime | None | Când a fost creată pagina. Returnează un obiect Python datetime în UTC. |
page.LastModifiedTime | datetime | None | Când a fost ultima modificare a paginii. |
page.Level | int | None | Nivelul de indentare al subpaginii. 0 = pagină de nivel superior, 1 = subpagină de primul nivel, 2 = al doilea nivel, etc. |
Pasul 1: Citește metadatele pentru fiecare pagină
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}")Exemplu complet: Raport de metadate
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")Detectarea sub-paginilor
În OneNote, sub-paginile sunt indentate vizual sub pagina părinte. Proprietatea page.Level reflectă această imbricare:
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 de nivel:
0: pagină de nivel superior1: subpagină de prim nivel (o indentare)2: subpagină de al doilea nivel (două indentări)
Note
- Toate marcajele de timp (
CreationTime,LastModifiedTime) sunt obiectedatetimeîn UTC când sunt prezente. page.LevelreturneazăNonepentru paginile în care nivelul nu a fost stocat în formatul binar. TratațiNoneca0utilizândpage.Level or 0.