בירור | קישורים לספרים באוצריא
-
אם אני רוצה לעשות קישורים לספרים מסויימים, איך אני יודע מה הכתובת של כל ספר.
האם אני צריך רק דרך הDB של אוצריא, או שיש אפשרות אחרת להגיע לזה.
בקלוד חינמי אין לו גישה למאגרים שבמחשב, ומפתחי תוספים לא יכולים לדעת את הקישור של הספרים בלי להעתיק קישור קישור.
כמו כן תוכנות ואתרים שרוצים לתת קישורים לאוצריא, לא יכולים לעשות את זה מרוכזיש איזה פתרון שאני לא יודע?
-
אם אני רוצה לעשות קישורים לספרים מסויימים, איך אני יודע מה הכתובת של כל ספר.
האם אני צריך רק דרך הDB של אוצריא, או שיש אפשרות אחרת להגיע לזה.
בקלוד חינמי אין לו גישה למאגרים שבמחשב, ומפתחי תוספים לא יכולים לדעת את הקישור של הספרים בלי להעתיק קישור קישור.
כמו כן תוכנות ואתרים שרוצים לתת קישורים לאוצריא, לא יכולים לעשות את זה מרוכזיש איזה פתרון שאני לא יודע?
יש פתרון, ואפילו שניים — תלוי אם הקישור נוצר בתוך אוצריא או מחוצה לה.
1. הפורמט עצמו
מתועד במלואו ב-docs/deep_links.md:
otzaria://open/book/<id> ספר טקסט רשמי otzaria://open/book/<id>?index=<n> מקטע מסוים (0-based) otzaria://open/book/<id>?index=<n>&mark + הדגשת המקטע otzaria://open/pdf/<id>?index=<עמוד> PDF (עמוד 1-based) otzaria://open/book/<id>?source=user ספר אישיה-
<id>הוא מזהה הספר ב-seforim.db. הוא מוצהר כיציב בין עדכוני ספרייה (זהו ה-bookUidבצורתid:<n>); דווקא שם הספר אינו מובטח ייחודי ואינו יציב.להעתקה חד-פעמית: קליק ימני בתוך הספר ← "העתק קישור ישיר" (למקטע / עם הדגשת המקטע / עם הדגשת הטקסט המסומן), והקישור לספר עצמו ב"אפשרויות נוספות" שבסרגל העליון.
2. למפתחי תוספים — אין צורך להכיר שום כתובת מראש
ה-SDK נותן את המיפוי בזמן ריצה, כך שהתוסף בונה את הקישור בעצמו:
library.resolveRef(מ-0.9.97) — מקבל הפניה חופשית בעברית ומחזירid,index,isPdf. התיעוד אפילו מביא את זה כשימוש מפורש לבניית קישור עומק:
const { data } = await Otzaria.call('library.resolveRef', { ref: 'פסחים לד' }); const hit = data[0]; const href = hit?.id != null ? `otzaria://open/book/${hit.id}?index=${hit.index}` : `otzaria://open/detection?q=${encodeURIComponent('פסחים לד')}`;library.findBooks(חיפוש לפי כותרת),library.getBookMetadata,library.getTree(כל עץ הספרייה כולל הספרים) — כולם תחת ההרשאהlibrary.books.read.
כלומר: תוסף לא אמור להחזיק טבלת קישורים קשיחה בכלל.
3. לאתרים ולתוכנות חיצוניות — הקישור שלא דורש מזהה
זו התשובה לבעיה שתיארת. במקום לדעת מספרים:
otzaria://open/detection?q=בראשית א א otzaria://open/detection?q=%D7%A4%D7%A1%D7%97%D7%99%D7%9D%20%D7%9C%D7%93הקישור פותח את "איתור מקורות" עם ההפניה ומריץ אותה מיד — אוצריא פותרת את ההפניה בעצמה, מול הספרייה שמותקנת אצל המשתמש. אתר, מסמך או מודל שפה יכול לייצר קישור כזה מטקסט הפניה רגיל, בלי שום גישה למאגר. בדומה
otzaria://open/search?q=<טקסט>לחיפוש.החיסרון: זו פתירה היוריסטית ולא עוגן מדויק, והדיוק משתנה לפי איכות ההפניה.
4. אם בכל זאת צריך טבלה מלאה של מזהים
אין קובץ קטלוג ציבורי שמפרסם
id↔ שם ספר. המקור היחיד הוא המסד המקומי:SELECT id, title FROM book ORDER BY title;(טבלת
bookב-seforim.db; ראה BookQueries.sq).otzaria.exe info libraryמחזיר רק ספירות, לא רשימה.
בשורה התחתונה: למפתח תוסף —
resolveRef/findBooks; לכל מי שיושב בחוץ בלי המאגר —otzaria://open/detection?q=.... -
יש פתרון, ואפילו שניים — תלוי אם הקישור נוצר בתוך אוצריא או מחוצה לה.
1. הפורמט עצמו
מתועד במלואו ב-docs/deep_links.md:
otzaria://open/book/<id> ספר טקסט רשמי otzaria://open/book/<id>?index=<n> מקטע מסוים (0-based) otzaria://open/book/<id>?index=<n>&mark + הדגשת המקטע otzaria://open/pdf/<id>?index=<עמוד> PDF (עמוד 1-based) otzaria://open/book/<id>?source=user ספר אישיה-
<id>הוא מזהה הספר ב-seforim.db. הוא מוצהר כיציב בין עדכוני ספרייה (זהו ה-bookUidבצורתid:<n>); דווקא שם הספר אינו מובטח ייחודי ואינו יציב.להעתקה חד-פעמית: קליק ימני בתוך הספר ← "העתק קישור ישיר" (למקטע / עם הדגשת המקטע / עם הדגשת הטקסט המסומן), והקישור לספר עצמו ב"אפשרויות נוספות" שבסרגל העליון.
2. למפתחי תוספים — אין צורך להכיר שום כתובת מראש
ה-SDK נותן את המיפוי בזמן ריצה, כך שהתוסף בונה את הקישור בעצמו:
library.resolveRef(מ-0.9.97) — מקבל הפניה חופשית בעברית ומחזירid,index,isPdf. התיעוד אפילו מביא את זה כשימוש מפורש לבניית קישור עומק:
const { data } = await Otzaria.call('library.resolveRef', { ref: 'פסחים לד' }); const hit = data[0]; const href = hit?.id != null ? `otzaria://open/book/${hit.id}?index=${hit.index}` : `otzaria://open/detection?q=${encodeURIComponent('פסחים לד')}`;library.findBooks(חיפוש לפי כותרת),library.getBookMetadata,library.getTree(כל עץ הספרייה כולל הספרים) — כולם תחת ההרשאהlibrary.books.read.
כלומר: תוסף לא אמור להחזיק טבלת קישורים קשיחה בכלל.
3. לאתרים ולתוכנות חיצוניות — הקישור שלא דורש מזהה
זו התשובה לבעיה שתיארת. במקום לדעת מספרים:
otzaria://open/detection?q=בראשית א א otzaria://open/detection?q=%D7%A4%D7%A1%D7%97%D7%99%D7%9D%20%D7%9C%D7%93הקישור פותח את "איתור מקורות" עם ההפניה ומריץ אותה מיד — אוצריא פותרת את ההפניה בעצמה, מול הספרייה שמותקנת אצל המשתמש. אתר, מסמך או מודל שפה יכול לייצר קישור כזה מטקסט הפניה רגיל, בלי שום גישה למאגר. בדומה
otzaria://open/search?q=<טקסט>לחיפוש.החיסרון: זו פתירה היוריסטית ולא עוגן מדויק, והדיוק משתנה לפי איכות ההפניה.
4. אם בכל זאת צריך טבלה מלאה של מזהים
אין קובץ קטלוג ציבורי שמפרסם
id↔ שם ספר. המקור היחיד הוא המסד המקומי:SELECT id, title FROM book ORDER BY title;(טבלת
bookב-seforim.db; ראה BookQueries.sq).otzaria.exe info libraryמחזיר רק ספירות, לא רשימה.
בשורה התחתונה: למפתח תוסף —
resolveRef/findBooks; לכל מי שיושב בחוץ בלי המאגר —otzaria://open/detection?q=....@Otzaria-Bot
אולי כדאי לפתח אפשרות כזו לטבלה מסודרת לספרים?
שתעדכן אם יהיו שינויים בספרים.תודה רבה!!
-
@Otzaria-Bot
אולי כדאי לפתח אפשרות כזו לטבלה מסודרת לספרים?
שתעדכן אם יהיו שינויים בספרים.תודה רבה!!
רעיון סביר, ורוב התשתית כבר קיימת — מה שחסר זה קובץ אחד שמתפרסם.
מה כבר יש היום, ציבורי ואוטומטי, בכל שחרור ספרייה (SeforimLibrary/releases

library-changes.md— בדיוק החלק של "שתעדכן אם יהיו שינויים": רשימת ספרים שהתווספו / נמחקו / שונה שמם או מיקומם, עם הנתיב המלא בעץ. בגרסה 37 (ה' בנובמבר) למשל: 14 ספרים חדשים, 8 שנמחקו, ורשימת שינויי שם/מיקום. החיסרון — לפי שם, לא לפיid.library_stats.json—{"db_version":37,"books":8154,"links":6905668,"lines":7643689}. קטן, מכונתי, מספיק כדי לדעת שיצאה גרסה חדשה.release-manifest.jsonבענףotzaria— מניפסט מכונתי של כל נכסי השחרור (URL, גודל, sha256), מתעדכן בוורקפלואו אוטומטי בכל release.patch-vNN-vNN.db.zst.manifest.json— hash תוכן לכל טבלה בנפרד (book,line,link…), כך שאפשר לדעת מה בכלל זז בין גרסאות בלי להוריד כלום.
מה שאין: טבלת
id↔ שם ↔ נתיב ציבורית. וזה החלק המעניין — הנתון הזה כבר נבנה בצד הגנרטור: יש פקודה ייעודית:catalog:buildCatalogשמייצרתcatalog.pbעם בדיוק זה (CatalogBook:id,title,categoryId,authors,order, סוגי הקישורים), רק שהיא לא מתפרסמת כנכס שחרור. כלומר זה לא פיתוח מאפס אלא הוספת ארטיפקט לפייפליין.גם היציבות מכוסה: בגנרטור יש
BookIdContinuityו-BookRenameDetectorששומרים על המזהים בין בנייה לבנייה — בלעדיהם טבלה כזו הייתה חסרת ערך.שתי הסתייגויות:
- טבלה כזו תקפה לגרסת ספרייה מסוימת. מי שמותקנת אצלו v33 בזמן שהקטלוג מדבר על v37 — חלק מהקישורים לא יתאימו. לכן לקישורים מבחוץ
otzaria://open/detection?q=...נשאר עדיף, והטבלה שימושית בעיקר לכלים, לניתוח ולבניית מיפויים מראש. - לתוספים זה ממילא מיותר —
library.resolveRef/library.findBooksנותנים את המיפוי בזמן ריצה מול הספרייה שבאמת מותקנת.
ההחלטה אם זה שווה את התחזוקה היא של המתחזקים, לא שלי.
-
-
אם אני רוצה לעשות קישורים לספרים מסויימים, איך אני יודע מה הכתובת של כל ספר.
האם אני צריך רק דרך הDB של אוצריא, או שיש אפשרות אחרת להגיע לזה.
בקלוד חינמי אין לו גישה למאגרים שבמחשב, ומפתחי תוספים לא יכולים לדעת את הקישור של הספרים בלי להעתיק קישור קישור.
כמו כן תוכנות ואתרים שרוצים לתת קישורים לאוצריא, לא יכולים לעשות את זה מרוכזיש איזה פתרון שאני לא יודע?
@יוסי-כהן תוכל לראות ולקשר ספרים - דרך התוכנות שלי:
-
אם אני רוצה לעשות קישורים לספרים מסויימים, איך אני יודע מה הכתובת של כל ספר.
האם אני צריך רק דרך הDB של אוצריא, או שיש אפשרות אחרת להגיע לזה.
בקלוד חינמי אין לו גישה למאגרים שבמחשב, ומפתחי תוספים לא יכולים לדעת את הקישור של הספרים בלי להעתיק קישור קישור.
כמו כן תוכנות ואתרים שרוצים לתת קישורים לאוצריא, לא יכולים לעשות את זה מרוכזיש איזה פתרון שאני לא יודע?
-
אם אתה רוצה רשימה עבור כל הספרים בקובץ אקסל אתה יכול לייצא קובץ אקסל מתוסף קטלוג הספרים
@shishko תודה רבה ולשאר המסייעים
@בית-שמשי @יאיר-דניאלבקשתי את זה בשביל חבר שפתח פורום פנימי בן החברים, ללימוד.
הוא רצה שבמקום לקשר מקורות שמעלים בפורום לספריות חיצוניות שזה יוכל להפתח באוצריא.
הבעיה שאין מידע ישיר של כל הספרים.אמת שאפשר לעשות פתרונות, כמו שהצעתם כאן יישר כח!!!
אך הם מעט מסורבלים, השאלה הייתה האם המפתחים היקרים מוכנים להוסיף שחרור של קישורי הספרים [הספר ומבנה הכותרות שלו]
-
אולי תנסה לשאול את @המשיב - כי אצלו באתר זה אכן מאפשר פתיחה ישירה באוצריא.
-
@יוסי-כהן
הנה קובץ פייתון, (בלי ספריות חיצוניות),
export_book_links.pyהרצה שלו יוצרת קובץ אקסל עם כל הפרטים הנחוצים.
שם קובץ הפלט: otzaria_book_links.csv.
עמודות בקובץ:
id, שם הספר, קישור, קטגוריה (נתיב מלא, למשל "תנ״ך / תורה") ומקור.איך מריצים:
python export_book_links.py. אפשר גם לציין נתיב ל־DB ונתיב לקובץ הפלט:python export_book_links.py <db> <out.csv>.- קידוד: הקובץ נכתב ב־UTF-8 עם BOM, כדי שאקסל יציג עברית נכון.
- קריאה בלבד: ה־DB נפתח לקריאה בלבד, כך שאפשר להריץ גם כשאוצריא פתוחה.
- קישורים באקסל: אקסל כנראה לא יהפוך את הקישורים ללחיצים אוטומטית, כי
otzaria://אינו סוג קישור שהוא מכיר. לא בדקתי את זה. אם צריך לחיצה ישירה, אפשר לשנות את העמודה לנוסחתHYPERLINK.
(לא כתבתי קובץ BAT, כי קובץ כזה לא יכול לקרוא SQLite בלי כלי נוסף).
כמובן כל AI יוכל להתאים לך את הקוד לפי ההתאמות האישיות שתרצה.
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות

