Cara Membaca Metadata Halaman dari OneNote dengan Python

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-note

Metadata Tingkat Dokumen

Objek Document mengekspos satu properti metadata:

PropertiTipeDeskripsi
doc.FileFormatFileFormatVarian 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:

PropertyTypeDescription
page.Authorstr | NoneNama tampilan pengguna yang membuat atau memiliki halaman.
page.CreationTimedatetime | NoneKapan halaman dibuat. Mengembalikan objek Python datetime dalam UTC.
page.LastModifiedTimedatetime | NoneKapan halaman terakhir dimodifikasi.
page.Levelint | NoneTingkat 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 atas
  • 1: sub‑halaman tingkat pertama (satu indentasi)
  • 2: sub‑halaman tingkat kedua (dua indentasi)

Catatan

  • Semua timestamp (CreationTime, LastModifiedTime) adalah objek datetime dalam UTC bila ada.
  • page.Level mengembalikan None untuk halaman di mana level tidak disimpan dalam format biner. Perlakukan None sebagai 0 menggunakan page.Level or 0.

Lihat Juga

 Bahasa Indonesia