תוכנה קטנה למחיקת ראשי התיבות משורת הכותרת באוצריא
-
כיום יש בעיה באיתור שכל הספרים בהם יש ראשי תיבות לא מופיעים באיתור.
הדבר כנראה לא יסתדר לפני המעבר לDB, שבינתיים אין לו (או לכל הפחות לא ידוע לי) תאריך ברור.
כבית חולים מתחת הגשר אני מצרף את הקישור שהביא הרב @יאיר-דניאל לקובץ שפשוט עובר על כל הקבצים ומוחק בהם את הראשי תיבות.
שימו לב הקובץ הוחלף עקב בעיות, מי שמזהה בעיות שיעדכן.
להורדת התוכנה.
מומלץ ללחוץ 'פתח בכרטיסיה חדשה', או ללחוץ על הקישור ורענן את הדף.
מה התוכנה עושה?
עוברת על התיקיה בנתיב c:\אוצריא\אוצריא (מי שצריך מקום אחר יכול לשנות בקוד עצמו, קיים בספוילר).
בודקת בכל הקבצים בתיקיות ותתי תיקיות האם הקובץ מתחיל בסימון <h1>, ואם כן האם יש בו ראשי תיבות (גם " וגם ״), אם באמת כך, היא מוחקת את הראשי תיבות.
לאחר ההרצה צריך לעדכן את האינדקס, וזה אומר עד כמה שידוע לי למחוק אותו לגמרי ולבנות אותו מחדש, אלא אם כן תשמעו כאן על דרך חדשה בעזר ה'.קוד המקור - בספוילר.
import os import glob def remove_quotes_from_heading(filepath): """ בודק את השורה הראשונה בקובץ טקסט, ואם היא מתחילה ב-<h1> וכוללת ", מוחק את ה-". """ try: with open(filepath, 'r+', encoding='utf-8') as file: # או קידוד אחר אם צריך lines = file.readlines() if lines: first_line = lines[0] if first_line.startswith("<h1>") and '״' in first_line: new_first_line = first_line.replace( '״', '') lines[0] = new_first_line file.seek(0) # חזרה לתחילת הקובץ file.writelines(lines) file.truncate() # מחיקת שאריות בסוף הקובץ print(f"טופל: {filepath}") if first_line.startswith("<h1>") and '"' in first_line: new_first_line = first_line.replace( '"', '') lines[0] = new_first_line file.seek(0) # חזרה לתחילת הקובץ file.writelines(lines) file.truncate() # מחיקת שאריות בסוף הקובץ print(f"טופל: {filepath}") except Exception as e: print(f"שגיאה בעיבוד {filepath}: {e}") def process_directory(root_dir): """ עובר על כל הקבצים בתיקיות ותתי התיקיות ומפעיל את הפונקציה remove_quotes_from_heading. """ for filepath in glob.glob(os.path.join(root_dir, '**/*.txt'), recursive=True): remove_quotes_from_heading(filepath) if __name__ == "__main__": root_directory = 'C:\\אוצריא\\אוצריא' process_directory(root_directory) print("הסתיים!")בדקתי את זה פעמים ועבד לי מצויין. מקוה שכך זה יהיה גם אצלכם אך בלי אחריות...
התוכנה הקטנה שהוצגה נועדה לפתור בעיה זמנית באיתור ספרים בתוכנת אוצריא, בהם מופיעים ראשי תיבות בשורת הכותרת. הבעיה היא שספרים אלו אינם מופיעים בתוצאות החיפוש בגלל צורת הטיפול בראשי התיבות, ופתרון קבוע צפוי רק במעבר עתידי למסד נתונים חדש.
מה התוכנה עושה?
התוכנה סורקת את הקבצים בנתיבC:\אוצריא\אוצריא, ובכל תתי התיקיות שבו. היא בודקת את השורה הראשונה בכל קובץ טקסט. אם השורה מתחילה בסימון<h1>(שמציין כותרת) ומכילה ראשי תיבות המסומנים בגרשיים (גם"וגם״), התוכנה מוחקת את סימני ראשי התיבות הללו מהכותרת.אופן פעולה (קוד המקור):
קוד המקור של התוכנה כתוב בפייתון וכולל שתי פונקציות עיקריות:remove_quotes_from_heading(filepath): פונקציה זו מקבלת נתיב לקובץ, קוראת את השורה הראשונה שלו, ובודקת אם היא מתחילה ב<h1>ומכילה את סימני הגרשיים. אם כן, היא מחליפה את השורה הראשונה בגרסה ללא הגרשיים וכותבת אותה בחזרה לקובץ.process_directory(root_dir): פונקציה זו מקבלת נתיב לתיקיית שורש (כמוC:\אוצריא\אוצריא), ועוברת באופן רקורסיבי על כל קבצי הטקסט (.txt) שבתוכה ובתיקיות המשנה שלה, ומפעילה עליהם את הפונקציהremove_quotes_from_heading.
לאחר הרצת התוכנה:
לאחר שהתוכנה מסיימת לעבור על הקבצים ולמחוק את ראשי התיבות, יש לעדכן את אינדקס החיפוש של אוצריא. כיום, הדבר אומר שיש למחוק את האינדקס הקיים ולבנות אותו מחדש לגמרי, אלא אם כן תפורסם דרך חדשה לעדכון האינדקס בפורום אוצריא.קישור להורדה:
ניתן להוריד את התוכנה דרך הקישור הבא: להורדת התוכנה.אחריות:
יש לציין כי מפעיל התוכנה מצהיר כי בדק אותה והיא עבדה לו מצוין, אך הוא אינו נושא באחריות לשימוש בה. -
@י.-פל.
ה@otzaria-bot ממש השתפר!!!
אבל הייתי מוסיף לו בפורמפט שהוא לא צריך להגיב על כל דבר (הדיוט קופץ בראש... במיוחד שהוא אפי' לא מקבל לייקים ע"כ...) אלא רק על נושאים שתויגו כבקשה/בקשת מידע/באג וכדו'
האם אני צודק? -
@י.-פל.
ה@otzaria-bot ממש השתפר!!!
אבל הייתי מוסיף לו בפורמפט שהוא לא צריך להגיב על כל דבר (הדיוט קופץ בראש... במיוחד שהוא אפי' לא מקבל לייקים ע"כ...) אלא רק על נושאים שתויגו כבקשה/בקשת מידע/באג וכדו'
האם אני צודק?@יאיר-דניאל
גם אני חשבתי שכאן הוא לא קשור.
ישר כח על הקימפול.
ראית שזה עובד גם עם כוכביות?
תראה כאן. -
@יאיר-דניאל
גם אני חשבתי שכאן הוא לא קשור.
ישר כח על הקימפול.
ראית שזה עובד גם עם כוכביות?
תראה כאן.@מענין-לשמוע כתב בתוכנה קטנה למחיקת ראשי התיבות משורת הכותרת באוצריא:
ראית שזה עובד גם עם כוכביות?
מה?
-
@מענין-לשמוע כתב בתוכנה קטנה למחיקת ראשי התיבות משורת הכותרת באוצריא:
ראית שזה עובד גם עם כוכביות?
מה?
@יאיר-דניאל
הקישור שהבאת!! -
כן, ממש מעניין!
-
כיום יש בעיה באיתור שכל הספרים בהם יש ראשי תיבות לא מופיעים באיתור.
הדבר כנראה לא יסתדר לפני המעבר לDB, שבינתיים אין לו (או לכל הפחות לא ידוע לי) תאריך ברור.
כבית חולים מתחת הגשר אני מצרף את הקישור שהביא הרב @יאיר-דניאל לקובץ שפשוט עובר על כל הקבצים ומוחק בהם את הראשי תיבות.
שימו לב הקובץ הוחלף עקב בעיות, מי שמזהה בעיות שיעדכן.
להורדת התוכנה.
מומלץ ללחוץ 'פתח בכרטיסיה חדשה', או ללחוץ על הקישור ורענן את הדף.
מה התוכנה עושה?
עוברת על התיקיה בנתיב c:\אוצריא\אוצריא (מי שצריך מקום אחר יכול לשנות בקוד עצמו, קיים בספוילר).
בודקת בכל הקבצים בתיקיות ותתי תיקיות האם הקובץ מתחיל בסימון <h1>, ואם כן האם יש בו ראשי תיבות (גם " וגם ״), אם באמת כך, היא מוחקת את הראשי תיבות.
לאחר ההרצה צריך לעדכן את האינדקס, וזה אומר עד כמה שידוע לי למחוק אותו לגמרי ולבנות אותו מחדש, אלא אם כן תשמעו כאן על דרך חדשה בעזר ה'.קוד המקור - בספוילר.
import os import glob def remove_quotes_from_heading(filepath): """ בודק את השורה הראשונה בקובץ טקסט, ואם היא מתחילה ב-<h1> וכוללת ", מוחק את ה-". """ try: with open(filepath, 'r+', encoding='utf-8') as file: # או קידוד אחר אם צריך lines = file.readlines() if lines: first_line = lines[0] if first_line.startswith("<h1>") and '״' in first_line: new_first_line = first_line.replace( '״', '') lines[0] = new_first_line file.seek(0) # חזרה לתחילת הקובץ file.writelines(lines) file.truncate() # מחיקת שאריות בסוף הקובץ print(f"טופל: {filepath}") if first_line.startswith("<h1>") and '"' in first_line: new_first_line = first_line.replace( '"', '') lines[0] = new_first_line file.seek(0) # חזרה לתחילת הקובץ file.writelines(lines) file.truncate() # מחיקת שאריות בסוף הקובץ print(f"טופל: {filepath}") except Exception as e: print(f"שגיאה בעיבוד {filepath}: {e}") def process_directory(root_dir): """ עובר על כל הקבצים בתיקיות ותתי התיקיות ומפעיל את הפונקציה remove_quotes_from_heading. """ for filepath in glob.glob(os.path.join(root_dir, '**/*.txt'), recursive=True): remove_quotes_from_heading(filepath) if __name__ == "__main__": root_directory = 'C:\\אוצריא\\אוצריא' process_directory(root_directory) print("הסתיים!")בדקתי את זה פעמים ועבד לי מצויין. מקוה שכך זה יהיה גם אצלכם אך בלי אחריות...
@מענין-לשמוע לא יותר מתאים להכניס את זה לקטגוריה "מדריכים ותוכנות עזר"?
-
ה הבל הבלים העביר נושא זה מ-אודות התוכנה
-
אולי, אבל זה תוכנה זמנית בלבד...
-
העברתי כבר.
-
@מענין-לשמוע תכתוב ללחוץ רענון בעמוד שנפתח כשלוחצים על הורדת התוכנה