Πώς να διαβάσετε τα μεταδεδομένα σελίδας από το OneNote σε Python
Τα αρχεία OneNote .one αποθηκεύουν μεταδεδομένα που μπορείτε να διαβάσετε χωρίς να αναλύσετε πλήρως το DOM του εγγράφου. Στο επίπεδο document Document.FileFormat σας λέει ποια παραλλαγή του OneNote χρησιμοποιεί το αρχείο. Στο επίπεδο page Page περιέχει τον συγγραφέα, την ημερομηνία δημιουργίας, την ημερομηνία τελευταίας τροποποίησης και το επίπεδο ιεραρχίας. Το Aspose.Note FOSS for Python εκθέτει αυτά μέσω των κλάσεων Document και Page.
Προαπαιτούμενα
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 περιέχει:
| Ιδιότητα | Τύπος | Περιγραφή |
|---|---|---|
page.Author | str | None | Το εμφανιζόμενο όνομα του χρήστη που δημιούργησε ή είναι ιδιοκτήτης της σελίδας. |
page.CreationTime | datetime | None | Όταν δημιουργήθηκε η σελίδα. Επιστρέφει ένα αντικείμενο Python datetime σε UTC. |
page.LastModifiedTime | datetime | None | Όταν η σελίδα τροποποιήθηκε τελευταία. |
page.Level | int | 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)'}")Level values:
0: σελίδα κορυφαίου επιπέδου1: υποσελίδα πρώτου επιπέδου (μία εσοχή)2: υποσελίδα δευτέρου επιπέδου (δύο εσοχές)
Σημειώσεις
- Όλες οι χρονικές σημάνσεις (
CreationTime,LastModifiedTime) είναιdatetimeαντικείμενα σε UTC όταν υπάρχουν. page.LevelεπιστρέφειNoneγια σελίδες όπου το επίπεδο δεν αποθηκεύτηκε στη δυαδική μορφή. ΘεωρήστεNoneως0χρησιμοποιώνταςpage.Level or 0.