Cara Membaca Metadata Halaman dari OneNote dengan Python
File OneNote .one menyimpan metadata yang dapat Anda baca tanpa harus mengurai seluruh DOM dokumen. Pada tingkat dokumen, Document.FileFormat memberi tahu Anda varian OneNote mana yang digunakan file tersebut. Pada tingkat halaman, setiap Page membawa penulis, cap waktu pembuatan, cap waktu terakhir diubah, dan tingkat hierarki. Aspose.Note FOSS untuk Python mengekspos ini melalui kelas Document dan Page.
Prasyarat
pip install aspose-noteMetadata Tingkat Dokumen
Objek Document mengekspos satu properti metadata:
| Properti | Tipe | Deskripsi |
|---|---|---|
doc.FileFormat | FileFormat | Varian OneNote: FileFormat.OneNote2010, FileFormat.OneNoteOnline, atau FileFormat.Unknown. |
from aspose.note import Document
doc = Document("MyNotes.one")
print(f"File format: {doc.FileFormat}")Metadata Tingkat Halaman
Setiap objek Page membawa:
| Property | Type | Description |
|---|---|---|
page.Author | str | None | Nama tampilan pengguna yang membuat atau memiliki halaman. |
page.CreationTime | datetime | None | Kapan halaman dibuat. Mengembalikan objek Python datetime dalam UTC. |
page.LastModifiedTime | datetime | None | Kapan halaman terakhir dimodifikasi. |
page.Level | int | None | Tingkat indent sub‑halaman. 0 = halaman tingkat atas, 1 = sub‑halaman tingkat pertama, 2 = tingkat kedua, dll. |
Langkah 1: Baca Metadata untuk Setiap Halaman
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}")Contoh Lengkap: Laporan Metadata
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")Mendeteksi Sub-Halaman
Di OneNote, sub‑halaman secara visual diindentasi di bawah halaman induknya. Properti page.Level mencerminkan penumpukan ini:
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)'}")Nilai level:
0: halaman tingkat atas1: sub‑halaman tingkat pertama (satu indentasi)2: sub‑halaman tingkat kedua (dua indentasi)
Catatan
- Semua timestamp (
CreationTime,LastModifiedTime) adalah objekdatetimedalam UTC bila ada. page.LevelmengembalikanNoneuntuk halaman di mana level tidak disimpan dalam format biner. PerlakukanNonesebagai0menggunakanpage.Level or 0.