Πώς να διαβάσετε τα μεταδεδομένα σελίδας από το OneNote σε Python

Πώς να διαβάσετε τα μεταδεδομένα σελίδας από το OneNote σε Python

Τα αρχεία OneNote .one αποθηκεύουν μεταδεδομένα που μπορείτε να διαβάσετε χωρίς να αναλύσετε πλήρως το DOM του εγγράφου. Στο επίπεδο document Document.FileFormat σας λέει ποια παραλλαγή του OneNote χρησιμοποιεί το αρχείο. Στο επίπεδο page 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)'}")

Level values:

  • 0: σελίδα κορυφαίου επιπέδου
  • 1: υποσελίδα πρώτου επιπέδου (μία εσοχή)
  • 2: υποσελίδα δευτέρου επιπέδου (δύο εσοχές)

Σημειώσεις

  • Όλες οι χρονικές σημάνσεις (CreationTime, LastModifiedTime) είναι datetime αντικείμενα σε UTC όταν υπάρχουν.
  • page.Level επιστρέφει None για σελίδες όπου το επίπεδο δεν αποθηκεύτηκε στη δυαδική μορφή. Θεωρήστε None ως 0 χρησιμοποιώντας page.Level or 0.

Δείτε επίσης

 Ελληνικά