Hur man läser sidmetadata från OneNote i Python
OneNote .one filer lagrar metadata som du kan läsa utan att parsa hela dokumentets DOM. På dokument nivå, Document.FileFormat anger vilken OneNote-variant filen använder. På sida nivå, varje Page bär med sig författaren, skapelsestidsstämpeln, senast ändrad tidsstämpel och hierarkinivå. Aspose.Note FOSS för Python exponerar dessa via Document och Page klasser.
Förutsättningar
pip install aspose-noteMetadata på dokumentnivå
Den Document objektet exponerar en metadataegenskap:
| Egenskap | Typ | Beskrivning |
|---|---|---|
doc.FileFormat | FileFormat | OneNote-varianten: FileFormat.OneNote2010, FileFormat.OneNoteOnline, eller FileFormat.Unknown. |
from aspose.note import Document
doc = Document("MyNotes.one")
print(f"File format: {doc.FileFormat}")Metadata på sidnivå
Varje Page objektet bär:
| Egenskap | Typ | Beskrivning |
|---|---|---|
page.Author | `str | None` |
page.CreationTime | `datetime | None` |
page.LastModifiedTime | `datetime | None` |
page.Level | `int | None` |
Steg 1: Läs metadata för varje sida
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}")Fullständigt exempel: Metadatrapport
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")Detektera undersidor
I OneNote är undersidor visuellt indenterade under sin föräldrasida. Den page.Level egenskapen återspeglar denna nästning:
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)'}")Värden för nivå:
0: toppnivåssida1: första nivåns undersida (en indragning)2: andra nivåns undersida (två indragningar)
Anteckningar
- Alla tidsstämplar (
CreationTime,LastModifiedTime) ärdatetimeobjekt i UTC när de finns. page.LevelreturnerarNoneför sidor där nivån inte lagrades i det binära formatet. BehandlaNonesom0använderpage.Level or 0.