Skip to content
palmoni5 edited this page Jul 17, 2026 · 1 revision

עיון הספרייה

מסך הספרייה (lib/library/) הוא נקודת הכניסה הראשית לספרים, יחד עם מסך הספרייה הריקה (lib/empty_library/) והקטלוג החיצוני (lib/external_catalog/).

המודל — library.dart

  • Category — צומת עץ: ‏title, ‏subCategories, ‏books, ‏parent, ‏path. עם getAllBooks ו־hasBooks.
  • Library — השורש ("ספריית אוצריא").
  • findBookByTitle / findBookByTitleFlexible — איתור ספר.
  • getCompanionBook — התאמת ה"בן זוג" PDF↔טקסט של אותו ספר (עם סינון בבלי↔ירושלמי) — הבסיס להמרת עמודים ולפתיחת בבלי כ־PDF.

LibraryBloc

  • LoadLibrary — טעינת העץ (עם droppable ושמירה מכפילות). נשלח מ־MainWindowScreen (ולא מ־AppBootstrap) משיקולי ביצועי עלייה.
  • RefreshLibrary — רענון מלא: גיזום תיקיות מותאמות שנמחקו + זיהוי ספרים חדשים/שהשתנו לאינדוקס.
  • UpdateLibraryPath — החלפת מיקום (כולל חילוץ ZIP במידת הצורך).
  • SearchBooks — חיפוש ספרים עם מונה generation נגד תוצאות מיושנות; אפשרות לכלול אוצר החכמה / היברובוקס.

מסך העיון — view/library_browser.dart

  • עץ משוטח (buildFlatLibraryRows) עם סדר קטגוריות עליון קבוע (תנ"ך, מדרש, משנה, תלמוד...).
  • מכסה של 500 ספרים לקטגוריה עם "הצג עוד".
  • חלונית תצוגה מקדימה של הספר (book_preview_panel.dart) עם רוחב מתכוונן.
  • דיאלוגים: מהדורות הספר (book_versions_dialog), ספר אוצר החכמה (otzar_book_dialog), דף יומי (library_daf_yomi).

חיפוש ספר — DataRepository.findBooks

חיפוש הכותרות המרכזי (מהספרייה ומכל שדה "פתח ספר"):

  • נרמול והתאמה fuzzy (מרחק עריכה תלוי־אורך) + ראשי תיבות (AcronymsCache) + שם מחבר.
  • מיון: התאמה מדויקת ← הכלה ← ראשי תיבות ← ‏fuzzy, בתוך כל שכבה לפי סדר הדורות (משדה book_generation ב־DB — המקור המוסמך היחיד).
  • רץ ב־isolate כדי לא לחסום את ה־UI.

ספרייה ריקה והורדה ראשונית — lib/empty_library/

EmptyLibraryBloc — שלוש דרכים לקבל ספרייה:

  1. בחירת תיקייה קיימת — איתור seforim.db בתיקייה.
  2. קובץ דחוס — ‏ZIP/ZST מקומי.
  3. הורדה מלאה מהרשת — ארבעה קבצים מ־GitHub Releases:
    • seforim.db.zst — הספרייה עצמה
    • talmud_bavli_latest.tar.zst — ‏PDF של התלמוד
    • otzar-HB_catalog.db.zst — קטלוגים חיצוניים
    • lexical.db — מילון החיפוש המקורב (אופציונלי)

ההורדה תומכת ב־resume (כותרות Range), פס התקדמות מאוחד עם ETA, פתרון redirect מראש, ובדיקת מקום פנוי. ב־Android — טיפול מלא ב־Scoped Storage (העתקת ה־DB לאחסון פנימי, keyDbEffectivePath).

הערה: חילוץ ה־ZST נעשה ב־streaming בכל פלטפורמות הדסקטופ (חילוץ into-memory גרם ל־OOM במכונות 8GB).

קטלוג חיצוני — lib/external_catalog/

ExternalCatalogRepository מנהל את otzar-HB_catalog.db (~60 אלף רשומות בטבלאות otzar_hahochma ו־hebrew_books):

  • קריאה ב־sqlite3 ישיר (read-only), מיפוי ל־ExternalLibraryBook: ‏oh:<id> ← ‏tablet.otzar.org, ‏hb:<id> ← ‏hebrewbooks.org.
  • עדכון גרסת הקטלוג מ־GitHub (השוואת version.txt מול db_meta.version, החלפה אטומית עם גיבוי).
  • ספר היברובוקס שיש לו PDF מקומי מומר ל־PdfBook רגיל ומוצג גם כשהספרים החיצוניים כבויים.

דפים קשורים

Clone this wiki locally