Cum să citești metadatele paginii din OneNote în Python
OneNote .one fișierele stochează metadata pe care le poți citi fără a parsa întregul DOM al documentului. La document nivel, Document.FileFormat îți spune ce variantă OneNote folosește fișierul. La pagină nivel, 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 Document și Page clasele.
Precondiții
pip install aspose-noteMetadate la nivel de document
Obiectul Document expune o proprietate de metadata:
| 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 Page obiect conține:
| Proprietate | Tip | Descriere |
|---|---|---|
page.Author | `str | None` |
page.CreationTime | `datetime | None` |
page.LastModifiedTime | `datetime | None` |
page.Level | `int | None` |
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. Această page.Level proprietatea 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 ale nivelului:
0: pagină de nivel superior1: sub-pagină de nivelul întâi (o indentare)2: sub-pagină de al doilea nivel (două indentări)
Note
- Toate marcajele de timp (
CreationTime,LastModifiedTime) suntdatetimeobiecte în UTC când sunt prezente. page.LevelreturneazăNonepentru paginile în care nivelul nu a fost stocat în formatul binar. TratațiNoneca0folosindpage.Level or 0.