كيفية قراءة بيانات تعريف الصفحة من OneNote باستخدام Python

كيفية قراءة بيانات تعريف الصفحة من OneNote باستخدام Python

ملفات OneNote .one تخزن بيانات تعريفية يمكنك قراءتها دون تحليل شجرة DOM الكاملة للمستند. على مستوى المستند، Document.FileFormat يخبرك بأي نسخة من OneNote يستخدمها الملف. على مستوى الصفحة، كل Page يحمل المؤلف، طابع زمن الإنشاء، طابع زمن آخر تعديل، ومستوى التسلسل الهرمي. Aspose.Note FOSS for Python يتيح الوصول إلى هذه عبر فئتي Document و Page.


المتطلبات المسبقة

pip install aspose-note

البيانات الوصفية على مستوى المستند

كائن Document يعرض خاصية بيانات وصفية واحدة:

الخاصيةالنوعالوصف
doc.FileFormatFileFormatمتغيّر OneNote: FileFormat.OneNote2010، FileFormat.OneNoteOnline، أو FileFormat.Unknown.
from aspose.note import Document

doc = Document("MyNotes.one")
print(f"File format: {doc.FileFormat}")

البيانات الوصفية على مستوى الصفحة

كل كائن Page يحمل:

الخاصيةالنوعالوصف
page.Authorstr | Noneاسم العرض للمستخدم الذي أنشأ الصفحة أو يملكها.
page.CreationTimedatetime | Noneوقت إنشاء الصفحة. تُعيد كائن Python datetime بتوقيت UTC.
page.LastModifiedTimedatetime | Noneوقت آخر تعديل للصفحة.
page.Levelint | Noneمستوى إزاحة الصفحة الفرعية. 0 = صفحة المستوى الأعلى، 1 = صفحة فرعية من المستوى الأول، 2 = المستوى الثاني، إلخ.

الخطوة 1: قراءة البيانات الوصفية لكل صفحة

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}")

مثال كامل: تقرير البيانات الوصفية

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")

اكتشاف الصفحات الفرعية

في OneNote، يتم إزاحة الصفحات الفرعية بصريًا تحت الصفحة الأصلية. خاصية page.Level تعكس هذا التداخل:

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)'}")

قيم المستويات:

  • 0: صفحة المستوى الأعلى
  • 1: صفحة فرعية من المستوى الأول (إزاحة واحدة)
  • 2: صفحة فرعية من المستوى الثاني (إزاحتان)

ملاحظات

  • جميع الطوابع الزمنية (CreationTime, LastModifiedTime) هي كائنات datetime بتوقيت UTC عندما تكون موجودة.
  • page.Level تُعيد None للصفحات التي لم يتم تخزين المستوى فيها بتنسيق ثنائي. عالج None كـ 0 باستخدام page.Level or 0.

انظر أيضًا

 العربية