Python에서 OneNote 페이지 메타데이터 읽는 방법

Python에서 OneNote 페이지 메타데이터 읽는 방법

OneNote .one 파일은 전체 문서 DOM을 파싱하지 않고도 읽을 수 있는 메타데이터를 저장합니다. document 수준에서는 Document.FileFormat이 파일이 사용하는 OneNote 변형을 알려줍니다. page 수준에서는 각 Page이 작성자, 생성 타임스탬프, 마지막 수정 타임스탬프 및 계층 수준을 포함합니다. Aspose.Note FOSS for Python은 이러한 정보를 DocumentPage classes.


전제 조건

pip install aspose-note

문서 수준 메타데이터

Document 객체는 메타데이터 속성 하나를 노출합니다:

속성유형설명
doc.FileFormatFileFormatOneNote 변형: FileFormat.OneNote2010, FileFormat.OneNoteOnline, 또는 FileFormat.Unknown.
from aspose.note import Document

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

페이지 수준 메타데이터

Page 객체는 다음을 포함합니다:

PropertyTypeDescription
page.Authorstr | None페이지를 만든 사용자 또는 소유자의 표시 이름입니다.
page.CreationTimedatetime | None페이지가 생성된 시점입니다. UTC 기준 Python datetime 객체를 반환합니다.
page.LastModifiedTimedatetime | None페이지가 마지막으로 수정된 시점입니다.
page.Levelint | None하위 페이지 들여쓰기 수준입니다. 0 = 최상위 페이지, 1 = 1단계 하위 페이지, 2 = 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)는 존재할 경우 UTC의 datetime 객체입니다.
  • page.Level은 레벨이 바이너리 형식에 저장되지 않은 페이지에 대해 None을 반환합니다. None0로, page.Level or 0을 사용하여 처리하십시오.

또 보기

 한국어