Jak načíst metadata stránky z OneNote v Pythonu
OneNote .one soubory ukládají metadata, která můžete číst bez parsování celého DOM dokumentu. Na úrovni document Document.FileFormat vám říká, kterou variantu OneNote soubor používá. Na úrovni page každý Page obsahuje autora, časové razítko vytvoření, časové razítko poslední úpravy a úroveň hierarchie. Aspose.Note FOSS pro Python tyto informace zpřístupňuje prostřednictvím tříd Document a Page.
Požadavky
pip install aspose-noteMetadata na úrovni dokumentu
Objekt Document poskytuje jednu vlastnost metadat:
| Vlastnost | Typ | Popis |
|---|---|---|
doc.FileFormat | FileFormat | Varianta OneNote: FileFormat.OneNote2010, FileFormat.OneNoteOnline nebo FileFormat.Unknown. |
from aspose.note import Document
doc = Document("MyNotes.one")
print(f"File format: {doc.FileFormat}")Metadata na úrovni stránky
Každý objekt Page obsahuje:
| Property | Type | Description |
|---|---|---|
page.Author | str | None | Zobrazované jméno uživatele, který stránku vytvořil nebo je jejím vlastníkem. |
page.CreationTime | datetime | None | Kdy byla stránka vytvořena. Vrací objekt Python datetime v UTC. |
page.LastModifiedTime | datetime | None | Kdy byla stránka naposledy upravena. |
page.Level | int | None | Úroveň odsazení podstránky. 0 = stránka nejvyšší úrovně, 1 = podstránka první úrovně, 2 = druhá úroveň atd. |
Krok 1: Přečíst metadata pro každou stránku
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}")Kompletní příklad: Zpráva o metadatech
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")Detekce podstránek
V OneNote jsou podstránky vizuálně odsazeny pod svou nadřazenou stránkou. Vlastnost page.Level odráží toto vnoření:
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)'}")Level values:
0: stránka nejvyšší úrovně1: podstránka první úrovně (jedno odsazení)2: podstránka druhé úrovně (dvě odsazení)
Poznámky
- Všechny časové razítka (
CreationTime,LastModifiedTime) jsoudatetimeobjekty v UTC, pokud jsou přítomny. page.LevelvracíNonepro stránky, kde úroveň nebyla uložena v binárním formátu. PovažujteNoneza0pomocípage.Level or 0.