דילוג לתוכן
0
  • דף הבית
  • חוקי הפורום
  • מדריכים
  • פוסטים אחרונים
  • לא נפתר
  • תגיות
  • פופולרי
  • משתמשים
  • תרומות לאוצריא
  • צור קשר
  • דף הבית
  • חוקי הפורום
  • מדריכים
  • פוסטים אחרונים
  • לא נפתר
  • תגיות
  • פופולרי
  • משתמשים
  • תרומות לאוצריא
  • צור קשר
עיצובים
  • בהיר
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • כהה
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
לוגו אתר

פורום אוצריא

אוצריא - דף הבית
|
קח שותפות בהוספת ספרים
|
תרום לאוצריא
  1. דף הבית
  2. הוספת ספרים לספריית אוצריא
  3. מדריך | יצירת קטלוג של הספרים באוצריא

מדריך | יצירת קטלוג של הספרים באוצריא

מתוזמן נעוץ נעול הועבר הוספת ספרים לספריית אוצריא
מדריךספריםתוכנות עזר
7 פוסטים 4 כותבים 425 צפיות 5 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
    תגובה
    • תגובה כנושא
    התחברו כדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • מ
      מ
      מעמע
      כתב ב נערך לאחרונה על ידי מעמע
      #1

      כמדומני שאין קטלוג מסודר של הספרים באוצריא.

      באחד הפוסטים נכתב על קובץ SourcesBooks.CSV שמכיל את הרשימה. שזו אותה רשימה שנמצאת במסך הספריה.

      החיסרון הוא למי שרוצה לראות בסקירה את כל הספרים יחד, בלי לפתוח תקיה תקיה, ומצד שני בלי כפילות (לוגית) מיותרת כמו שמופיע חידושי הרן על כל מסכת (רן על ברכות ורן על מגילה). כי בסוף רוצים לראות את שמות הספרים ולא כמה חלקים יש מכל ספר.

      הפתרון שכרגע מצאתי, הוא סינון של הרשימה באקסל.

      מצורף דוגמא לסינון שעשיתי:

      חוברת1.xlsx

      הסברים:

      בתוכנת אקסל > נתונים > מCSV ולפתוח בתוך תקית אוצריא את תקית אודות ולפתוח את קובץ SourcesBooks.
      a035a837-a836-4a91-acb3-e9dbfa976be2-image.png

      לטעון את הנתונים.
      5a4b56ed-7bfd-4a39-a20a-befa41bf252e-image.png

      לעמוד על התא החדש שבשורה הראשונה משמאל לטבלה, והזין את הפונקציה הזאת ולאשר.

      =TRIM(LEFT(A2, IFERROR(FIND(" על ", A2), LEN(A2)+1)-1))
      

      3f6d3a87-fc84-430b-9c7a-fdd74d34e4b9-image.png

      תווצר אוטומטית עמודה חדשה על כל הטבלה.
      עכשיו ניתן ללחוץ על הסר כפילות.

      ואם נשנה את המילה על שבפונקציה לרשימה הזאת ונסיר כפילות כל פעם, נשאר רק עם הרשימה האמיתית.

      על, חלק, שולחן, וכדו' 
      

      הפונקציה חותכת את שאר התא כך שאפשר לצמצם בקלות את הרשימה.
      36885d04-94d6-4895-8932-1ad00fc8a858-image.png

      רק חשוב לציין שצריך להסיר רק כפילות של העמודה החדשה שהיא זו שמסננת, ולא למשל את המספרי שורה שאולי יש 2 ספרים עם אותו מספר שורות.
      19da1f3a-6a6a-4ef4-bf32-f724b5ba80bf-image.png
      כמובן שזה אקסל וניתן למיין ולהדפיס.

      מסתבר שמישהו יכול פשוט ליצור תוכנה קטנה. אבל בינתיים זה מאפשר סקירה מהירה על כל המאגר.

      ושוב הרשימה: חוברת1.xlsx

      הבל הבליםה תגובה 1 תגובה אחרונה
      2
      • מ מעמע

        כמדומני שאין קטלוג מסודר של הספרים באוצריא.

        באחד הפוסטים נכתב על קובץ SourcesBooks.CSV שמכיל את הרשימה. שזו אותה רשימה שנמצאת במסך הספריה.

        החיסרון הוא למי שרוצה לראות בסקירה את כל הספרים יחד, בלי לפתוח תקיה תקיה, ומצד שני בלי כפילות (לוגית) מיותרת כמו שמופיע חידושי הרן על כל מסכת (רן על ברכות ורן על מגילה). כי בסוף רוצים לראות את שמות הספרים ולא כמה חלקים יש מכל ספר.

        הפתרון שכרגע מצאתי, הוא סינון של הרשימה באקסל.

        מצורף דוגמא לסינון שעשיתי:

        חוברת1.xlsx

        הסברים:

        בתוכנת אקסל > נתונים > מCSV ולפתוח בתוך תקית אוצריא את תקית אודות ולפתוח את קובץ SourcesBooks.
        a035a837-a836-4a91-acb3-e9dbfa976be2-image.png

        לטעון את הנתונים.
        5a4b56ed-7bfd-4a39-a20a-befa41bf252e-image.png

        לעמוד על התא החדש שבשורה הראשונה משמאל לטבלה, והזין את הפונקציה הזאת ולאשר.

        =TRIM(LEFT(A2, IFERROR(FIND(" על ", A2), LEN(A2)+1)-1))
        

        3f6d3a87-fc84-430b-9c7a-fdd74d34e4b9-image.png

        תווצר אוטומטית עמודה חדשה על כל הטבלה.
        עכשיו ניתן ללחוץ על הסר כפילות.

        ואם נשנה את המילה על שבפונקציה לרשימה הזאת ונסיר כפילות כל פעם, נשאר רק עם הרשימה האמיתית.

        על, חלק, שולחן, וכדו' 
        

        הפונקציה חותכת את שאר התא כך שאפשר לצמצם בקלות את הרשימה.
        36885d04-94d6-4895-8932-1ad00fc8a858-image.png

        רק חשוב לציין שצריך להסיר רק כפילות של העמודה החדשה שהיא זו שמסננת, ולא למשל את המספרי שורה שאולי יש 2 ספרים עם אותו מספר שורות.
        19da1f3a-6a6a-4ef4-bf32-f724b5ba80bf-image.png
        כמובן שזה אקסל וניתן למיין ולהדפיס.

        מסתבר שמישהו יכול פשוט ליצור תוכנה קטנה. אבל בינתיים זה מאפשר סקירה מהירה על כל המאגר.

        ושוב הרשימה: חוברת1.xlsx

        הבל הבליםה
        הבל הבליםה
        הבל הבלים
        צוות פיקוח
        כתב ב נערך לאחרונה על ידי
        #2

        @מעמע אולי תעלה את התוצאה שלך?
        אולי אנשים ייהנו מזה.

        תגובה 1 תגובה אחרונה
        0
        • יום חדש מתחילי
          יום חדש מתחילי
          יום חדש מתחיל
          מנהל ספריית אוצריא
          כתב ב נערך לאחרונה על ידי
          #3

          @מעמע יש לך טעות גדולה. אין שום כפילויות בספרים.
          אני ממש לא מבין על איזה כפילויות אתה מדבר!!!
          אשמח שתכתוב כאן אפילו כפילות אחד שמצאת!

          הבל הבליםה תגובה 1 תגובה אחרונה
          0
          • יום חדש מתחילי יום חדש מתחיל

            @מעמע יש לך טעות גדולה. אין שום כפילויות בספרים.
            אני ממש לא מבין על איזה כפילויות אתה מדבר!!!
            אשמח שתכתוב כאן אפילו כפילות אחד שמצאת!

            הבל הבליםה
            הבל הבליםה
            הבל הבלים
            צוות פיקוח
            כתב ב נערך לאחרונה על ידי הבל הבלים
            #4

            @יום-חדש-מתחיל הוא מדבר על "חידושי הרן על בבא קמא" ו"חידושי הרן על בבא מציעא", לא על ספר שיש אותו פעמיים.

            מ תגובה 1 תגובה אחרונה
            2
            • הבל הבליםה הבל הבלים

              @יום-חדש-מתחיל הוא מדבר על "חידושי הרן על בבא קמא" ו"חידושי הרן על בבא מציעא", לא על ספר שיש אותו פעמיים.

              מ
              מ
              מעמע
              כתב ב נערך לאחרונה על ידי מעמע
              #5

              @הבל-הבלים נכון. אני התכוונתי לכפילות לוגית, שרוצים את שם הספר עצמו ולא את הכרכים שיש לכל ספר, כמו חלק א חלק ב.

              עדכנתי את הפוסט הראשון, וגם צירפתי דוגמא שסיננתי.

              תגובה 1 תגובה אחרונה
              1
              • יאיר דניאלי
                יאיר דניאלי
                יאיר דניאל
                תורם לאוצריא ניהול תוספים
                כתב ב נערך לאחרונה על ידי יום חדש מתחיל
                #6

                מצורף קוד פייתון שעושה את העבודה - וגם קוד מקומפל לתוכנה.
                הקוד יוצר קובץ אקסל עם עמודות מסודרות - של שם הספר והנתיב שלו.
                הוא מסיר כפילויות של:
                " על ", " חלק ", " שולחן ", "-", "מסכת"

                אם אתם רוצים להוסיף כפילויות נוספות - פשוט תכניסו אותם לקובץ cut_words.json המצורף.
                (-גם בלי הקובץ הנ"ל הקוד מסיר בכל מקרה את הכפילויות הנ"ל)

                import os
                import sys
                import json
                import csv
                import tkinter as tk
                from tkinter import filedialog, messagebox
                from openpyxl import Workbook
                from openpyxl.worksheet.table import Table, TableStyleInfo
                
                # ==================================================
                # הגדרות
                # ==================================================
                DEFAULT_PATH = r"C:\אוצריא\אוצריא\אודות התוכנה\SourcesBooks.csv"
                REQUIRED_NAME = "SourcesBooks.csv"
                CONFIG_PATH = os.path.join(os.getenv("APPDATA", os.getcwd()), "sourcesbooks_config.json")
                OUTPUT_XLSX = os.path.join(os.path.expanduser("~"), "Desktop", "רשימת_ספרים.xlsx")  # שמירה על שולחן העבודה
                
                # טען רשימת חיתוך חיצונית (אפשר לערוך cut_words.json)
                CUT_WORDS_FILE = "cut_words.json"
                if os.path.isfile(CUT_WORDS_FILE):
                    with open(CUT_WORDS_FILE, encoding="utf-8") as f:
                        data = json.load(f)
                        CUT_WORDS = data.get("cut_words", [])
                else:
                    # ברירת מחדל אם אין קובץ חיצוני
                    CUT_WORDS = [" על ", " חלק ", " שולחן ", "-", "מסכת"]
                
                # ==================================================
                # איתור הקובץ
                # ==================================================
                def load_saved_path():
                    if os.path.isfile(CONFIG_PATH):
                        try:
                            with open(CONFIG_PATH, encoding="utf-8") as f:
                                data = json.load(f)
                                path = data.get("path")
                                if path and os.path.isfile(path):
                                    return path
                        except Exception:
                            pass
                    return None
                
                def save_path(path):
                    os.makedirs(os.path.dirname(CONFIG_PATH), exist_ok=True)
                    with open(CONFIG_PATH, "w", encoding="utf-8") as f:
                        json.dump({"path": path}, f, ensure_ascii=False, indent=2)
                
                def choose_file():
                    root = tk.Tk()
                    root.withdraw()
                    messagebox.showinfo(
                        "בחירת קובץ",
                        f'הקובץ "{REQUIRED_NAME}" לא נמצא.\n\n'
                        f'אנא נווט לקובץ בשם "{REQUIRED_NAME}"'
                    )
                
                    while True:
                        path = filedialog.askopenfilename(
                            title=f'בחר את הקובץ "{REQUIRED_NAME}"',
                            filetypes=[("CSV files", "*.csv"), ("All files", "*.*")]
                        )
                        if not path:
                            messagebox.showerror("בוטל", "לא נבחר קובץ. התוכנית תיסגר.")
                            sys.exit(1)
                        if os.path.basename(path) != REQUIRED_NAME:
                            messagebox.showerror("שם קובץ שגוי", f"נדרש לבחור קובץ בשם:\n{REQUIRED_NAME}")
                            continue
                        return path
                
                def locate_sourcesbooks():
                    if os.path.isfile(DEFAULT_PATH):
                        save_path(DEFAULT_PATH)
                        return DEFAULT_PATH
                    saved = load_saved_path()
                    if saved:
                        return saved
                    chosen = choose_file()
                    save_path(chosen)
                    return chosen
                
                # ==================================================
                # ניקוי שם ספר לפי CUT_WORDS + מסכת + "-"
                # ==================================================
                def clean_title(title: str) -> str:
                    t = title
                    # חיתוך לפי CUT_WORDS
                    first_idx = len(t)
                    for w in CUT_WORDS:
                        idx = t.find(w)
                        if idx != -1 and idx < first_idx:
                            first_idx = idx
                    t = t[:first_idx].strip()
                
                    # חיתוך לפי "מסכת" אם היא מופיעה כמילה שלישית
                    words_after_cut = t.split()
                    if len(words_after_cut) >= 3 and "מסכת" in CUT_WORDS and words_after_cut[2] == "מסכת":
                        t = " ".join(words_after_cut[:2]).strip()
                
                    return t
                
                # ==================================================
                # קריאה וייצוא לאקסל (בלי טור מקור הקובץ)
                # ==================================================
                def export_to_excel(csv_path):
                    books_set = set()
                    books_list = []
                
                    with open(csv_path, encoding="utf-8", newline="") as f:
                        reader = csv.reader(f)
                        for row in reader:
                            if not row:
                                continue
                            raw = row[0].strip()
                            if raw:
                                clean_name = clean_title(raw)
                                if clean_name not in books_set:
                                    books_set.add(clean_name)
                                    books_list.append({
                                        "name": clean_name,
                                        "file_path": os.path.dirname(csv_path)
                                    })
                
                    books_list.sort(key=lambda x: x["name"])
                
                    wb = Workbook()
                    ws = wb.active
                    ws.title = "ספרים"
                
                    # הגדרת כיוון מימין לשמאל
                    ws.sheet_view.rightToLeft = True
                
                    # כותרות
                    ws.append(["מספר", "שם הספר", "נתיב הקובץ"])
                
                    for i, book in enumerate(books_list, start=1):
                        ws.append([i, book["name"], book["file_path"]])
                
                    table = Table(displayName="BooksTable", ref=f"A1:C{len(books_list)+1}")
                    style = TableStyleInfo(
                        name="TableStyleMedium9",
                        showFirstColumn=False,
                        showLastColumn=False,
                        showRowStripes=True,
                        showColumnStripes=False
                    )
                    table.tableStyleInfo = style
                    ws.add_table(table)
                
                    # רוחב עמודות מותאם
                    ws.column_dimensions["A"].width = 8
                    ws.column_dimensions["B"].width = 55
                    ws.column_dimensions["C"].width = 80
                
                    wb.save(OUTPUT_XLSX)
                
                # ==================================================
                # MAIN
                # ==================================================
                if __name__ == "__main__":
                    sourcesbooks_path = locate_sourcesbooks()
                    print("✔ נמצא הקובץ:", sourcesbooks_path)
                
                    export_to_excel(sourcesbooks_path)
                    print(f"✔ נוצר קובץ אקסל: {OUTPUT_XLSX}")
                
                    input("\nסיום – לחץ Enter כדי לצאת")
                
                

                cut_words.json

                הנה הקוד פייתון להורדה:
                ExportBooks.PY

                והנה כתוכנה:
                ExportBooks.exe

                והנה - הקובץ אקסל שנוצר - "רשימת ספרים" בשולחן העבודה.
                רשימת_ספרים.xlsx

                תגובה 1 תגובה אחרונה
                2
                • מ
                  מ
                  מעמע
                  כתב ב נערך לאחרונה על ידי
                  #7

                  וואו... מעולה, בדיוק לזה התכוונתי!
                  הערה קטנה: הנתיב של הספרים לא לפי הספר ובכל הספרים הנתיב הוא C:\אוצריא\אוצריא\אודות התוכנה.

                  תגובה 1 תגובה אחרונה
                  1

                  שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.

                  נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.

                  בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

                  הרשמה התחברות

                  • התחברות

                  • אין לך חשבון עדיין? הרשמה

                  • התחברו או הירשמו כדי לחפש.
                  • פוסט ראשון
                    פוסט אחרון