Python에서 OneNote 페이지 메타데이터 읽는 방법
OneNote .one 파일은 전체 문서 DOM을 파싱하지 않고도 읽을 수 있는 메타데이터를 저장합니다. document 수준에서는 Document.FileFormat이 파일이 사용하는 OneNote 변형을 알려줍니다. page 수준에서는 각 Page이 작성자, 생성 타임스탬프, 마지막 수정 타임스탬프 및 계층 수준을 포함합니다. Aspose.Note FOSS for Python은 이러한 정보를 Document 및 Page classes.
전제 조건
pip install aspose-note문서 수준 메타데이터
Document 객체는 메타데이터 속성 하나를 노출합니다:
| 속성 | 유형 | 설명 |
|---|---|---|
doc.FileFormat | FileFormat | OneNote 변형: FileFormat.OneNote2010, FileFormat.OneNoteOnline, 또는 FileFormat.Unknown. |
from aspose.note import Document
doc = Document("MyNotes.one")
print(f"File format: {doc.FileFormat}")페이지 수준 메타데이터
각 Page 객체는 다음을 포함합니다:
| Property | Type | Description |
|---|---|---|
page.Author | str | None | 페이지를 만든 사용자 또는 소유자의 표시 이름입니다. |
page.CreationTime | datetime | None | 페이지가 생성된 시점입니다. UTC 기준 Python datetime 객체를 반환합니다. |
page.LastModifiedTime | datetime | None | 페이지가 마지막으로 수정된 시점입니다. |
page.Level | int | 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을 반환합니다.None을0로,page.Level or 0을 사용하여 처리하십시오.