Cara Membaca Metadata Halaman dari OneNote dalam Python

Cara Membaca Metadata Halaman dari OneNote dalam Python

OneNote .one fail menyimpan metadata yang anda boleh baca tanpa mengurai DOM dokumen penuh. Pada peringkat dokumen, Document.FileFormat memberitahu anda varian OneNote mana yang digunakan oleh fail. Pada peringkat halaman, setiap Page membawa penulis, cap masa penciptaan, cap masa pengubahsuaian terakhir, dan tahap hierarki. Aspose.Note FOSS untuk Python mendedahkan ini melalui kelas Document dan Page.


Prasyarat

pip install aspose-note

Metadata Peringkat Dokumen

Objek Document memaparkan satu sifat metadata:

SifatJenisKeterangan
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 Peringkat Halaman

Setiap objek Page membawa:

PropertyTypeDescription
page.Authorstr | NoneNama paparan pengguna yang mencipta atau memiliki halaman tersebut.
page.CreationTimedatetime | NoneBila halaman itu dicipta. Mengembalikan objek Python datetime dalam UTC.
page.LastModifiedTimedatetime | NoneBila halaman itu terakhir diubah suai.
page.Levelint | NoneTahap inden sub-halaman. 0 = halaman peringkat atas, 1 = sub-halaman peringkat pertama, 2 = peringkat 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")

Mengesan Sub-Halaman

Dalam OneNote, sub‑halaman ditandakan secara visual di bawah halaman induknya. Sifat page.Level mencerminkan susunan 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 tahap:

  • 0: halaman peringkat atas
  • 1: sub‑halaman peringkat pertama (satu inden)
  • 2: sub‑halaman peringkat kedua (dua inden)

Catatan

  • Semua cap masa (CreationTime, LastModifiedTime) adalah objek datetime dalam UTC apabila ada.
  • page.Level mengembalikan None untuk halaman di mana aras tidak disimpan dalam format binari. Anggap None sebagai 0 menggunakan page.Level or 0.

Lihat Juga

 Bahasa Melayu