בעיה | גישה של תוסף לכותרות ספר
-
שמתי לב שבתוספים שיש בהם קישור לפתיחת הספר דרך מסך עיון, הספר תמיד נפתח לדף הראשון, למרות שהתוסף מנסה לפתוח אותו בדף מסויים, (מה שכן רואים שבתיבת חיפוש מופיע הדף המבוקש כאילו הוא מנסה לחפש אותו דרך החיפוש) למשל בתוסף של ביוגרפיות תנאים ואמוראים או עיון ההלכה, וגם לי היו כמה ניסיונות לפתח תוסף שהייתי צריך שיפתח את הספר במקום מסויים ללא הצלחה.
כמו כן גם אם אני רוצה לפתוח ספר בתוסף עצמו התוסף לא מצליח לקבל את הכותרות של הספר והדרך היחידה שעבדה לי היא באמצעות חיפוש הכותרת בתוכן הספר (מה שמאט את זה בספרים מרובים)
האם זו בעיה מובנית שהתוסף לא יכול לקבל את כותרות הספר?
@otzaria-bot או מישהו אחר שיודע...
תודה מראש -
שמתי לב שבתוספים שיש בהם קישור לפתיחת הספר דרך מסך עיון, הספר תמיד נפתח לדף הראשון, למרות שהתוסף מנסה לפתוח אותו בדף מסויים, (מה שכן רואים שבתיבת חיפוש מופיע הדף המבוקש כאילו הוא מנסה לחפש אותו דרך החיפוש) למשל בתוסף של ביוגרפיות תנאים ואמוראים או עיון ההלכה, וגם לי היו כמה ניסיונות לפתח תוסף שהייתי צריך שיפתח את הספר במקום מסויים ללא הצלחה.
כמו כן גם אם אני רוצה לפתוח ספר בתוסף עצמו התוסף לא מצליח לקבל את הכותרות של הספר והדרך היחידה שעבדה לי היא באמצעות חיפוש הכותרת בתוכן הספר (מה שמאט את זה בספרים מרובים)
האם זו בעיה מובנית שהתוסף לא יכול לקבל את כותרות הספר?
@otzaria-bot או מישהו אחר שיודע...
תודה מראשכעת יש לי מספיק מידע לענות.
מדובר במגבלה אמיתית של ה-API הנוכחי של תוספים, לא בעיה שניתן לעקוף בקלות. הנה ההסבר הטכני:
פתיחת ספר במיקום מסויים
המודל הפנימי (
TextBookTab) מקבל פרמטרindex— מספר שורה/פריט ב-list, לא שם כותרת. כאשר תוסף מגדירsearchText(שם הדף המבוקש), התוכנה שמה אותו בתיבת החיפוש אבל לא מתרגמת אותו לאינדקס מספרי — לכן הספר נפתח לדף ראשון עם הטקסט בחיפוש. זו בדיוק ההתנהגות שתיארת.גישה לכותרות הספר
כותרות הספר מתקבלות דרך
getBookToc()— פעולה אסינכרונית שמנתחת את תוכן הספר כדי לבנות היררכיית כותרות מ-HTML headings. ה-API של תוספים לא חושף פונקציה זו ישירות, ולכן הדרך היחידה שעובדת היא חיפוש טקסט הכותרת בתוכן — שזה בדיוק מה שמאט ב"ספרים מרובים".לסיכום: זו מגבלה מובנית. ה-API של תוספים כרגע לא מספק:
- המרת שם כותרת לאינדקס מספרי
- גישה ישירה ל-TOC של ספר
כדאי לפתוח issue ב-https://github.com/Otzaria/otzaria/issues ולבקש:
- חשיפת
getBookToc()ל-API תוספים - פונקציה
openBookAtHeading(bookTitle, headingName)שמבצעת את ההמרה פנימית
-
תיקון לתשובתי הקודמת — בדקתי שוב מול קוד המקור, וטעיתי בנקודה המרכזית. יש מה לעשות, והבעיה פתירה כבר היום בלי שום שינוי בתוכנה. 🙂
מה שהיה לא מדויק
כתבתי ש-
getBookToc()לא חשוף ל-API של התוספים — זה שגוי. הפעולהlibrary.getBookTocקיימת ומתועדת, ודורשת את ההרשאהlibrary.content.read.הפתרון
הנקודה החשובה: ה-
indexשמחזירgetBookTocלכל כותרת הוא בדיוק אותוindexש-reader.openBookמצפה לו (שניהם מספר השורה/הפריט בליסט הספר). לכן אפשר לתרגם כותרת לאינדקס בעצמך ולפתוח במיקום מדויק:// 1. שליפת תוכן העניינים (מהיר — לא חיפוש בתוכן הספר) const { data: toc } = await Otzaria.call('library.getBookToc', { bookId: 'שם הספר' }); // 2. איתור הכותרת הרצויה ולקיחת ה-index המספרי שלה const entry = toc.find(e => e.text.includes('שם הפרק/הדף')); // 3. פתיחה עם index אמיתי — לא searchQuery await Otzaria.call('reader.openBook', { bookId: 'שם הספר', index: entry.index });זה פותר את שתי הבעיות:
- פתיחה במיקום — צריך להעביר
indexאמיתי. הסיבה שהספר נפתח בדף הראשון היא שהתוסף מעבירsearchQueryבלבד, וזה פרמטר להדגשת טקסט בלבד — הוא לא מנווט לאינדקס. - קבלת הכותרות —
getBookTocמחזיר אותן ישירות ומהר, בלי הצורך לחפש בתוכן הספר. צריך רק שהתוסף יבקש את ההרשאהlibrary.content.read.
לגבי התוספים הקיימים
תוספים כמו "ביוגרפיות" / "עיון ההלכה" נפתחים בדף הראשון כי הם משתמשים ב-
searchQueryבמקום ב-index. עדכון שלהם למסלולgetBookToc←indexיפתור להם את זה.מתנצל על הבלבול בתשובה הקודמת. 🙏
- פתיחה במיקום — צריך להעביר
-
עדכון — בדקתי לעומק את תוסף ביוגרפיות (1.0.3), וגיליתי שהשורש לא בתוסף. 🔍
התוסף כבר עושה את הדבר הנכון: הוא קורא ל-
reader.openBookAtRefעם ה-refהמבוקש (למשלס"ד ע"ב). הבעיה הייתה בצד התוכנה.השורש
reader.openBookAtRefאמור לתרגם את ה-refלאינדקס דרך תוכן העניינים, אבל ההתאמה שלו לכותרות ה-TOC הייתה השוואת טקסט נאיבית (contains). הפורמטים פשוט לא תאמו:- מה שהתוסף שולח:
ס"ד ע"ב - מה שכתוב בתוכן העניינים:
דף סד:(נקודתיים = עמוד ב, נקודה = עמוד א)
שלושה הבדלים — גרשיים,
ע"במול:, והמילה "דף" — גרמו לכך שההתאמה נכשלה, האינדקס נשאר 0, והספר נפתח בדף הראשון עם ה-refבתיבת החיפוש. בדיוק הסימפטום שתיארת.התיקון
תיקנתי את ההתאמה בקוד הליבה כך שתנרמל את שני הצדדים (גרשיים,
ע"א/ע"במול./:, "דף"/"עמוד") ותתאים לפי טוקנים. זה פותר את זה עבור כל התוספים שמשתמשים ב-openBookAtRef, לא רק ביוגרפיות.מה זה אומר בפועל:
- התוסף הקיים תקין ולא צריך שום שינוי.
- התיקון יגיע בגרסת אוצריא הבאה — מאותו רגע הפתיחה במיקום תעבוד מאליה.
תודה על הדיווח המדויק, הוא עזר לאתר את זה. 🙏
- מה שהתוסף שולח:
-
@דוד-משה-1
אם מבקשים ממנו, וד״ל 😉
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות