מדריך | ספרי ספריא ותורת אמת בepub בעזרת python + calibre
-
עדכון: כתבתי סקריפט לספרי תורת אמת באופן ספציפי [כולל גם המרת קידוד וכותרות שקיימות רק שם ולא בקידודון, כגון $,^ ו!
import os def convert_in_folder(folder_path): for root, _, files in os.walk(folder_path): for file_name in files: if file_name.lower().endswith(".txt"): old_path = os.path.join(root, file_name) new_path = os.path.join(root, file_name[:-4] + ".html") os.rename(old_path, new_path) convert_encoding(new_path) def convert_encoding(file_path): try: with open(file_path, 'r', encoding='windows-1255') as ansi_file: content = ansi_file.read() # Remove un convertible characters content = content.encode('utf-8', 'ignore').decode('utf-8') with open(file_path, 'w', encoding='utf-8') as utf8_file: utf8_file.write(content) print(f"Converted: {file_path}") process_html_file(file_path) except Exception as e: print(f"Error converting {file_path}: {e}") os.remove(file_path) def process_html_file(input_file, input_encoding='utf-8'): with open(input_file, 'r', encoding=input_encoding) as f: html_content = f.read() processed_lines = [] lines = f.readlines() # Split lines and process each line lines = html_content.splitlines() lest_line = 0 lest_line_2 = "" line_index = 0 first = False bookTitle = 'Untitled Book' for line in lines[1:]: # Process lines with #, @, ~ if line.startswith('#'): processed_lines.append(f'<h1 class="bookTitle">{line[2:]}</h1>') lest_line=1 first = True elif line.startswith('^'): processed_lines.append(f'<h1 class="bbookTitle">{line[2:]}</h1>') lest_line=1 first = True elif line.startswith('@'): if not first: processed_lines.append(f'<h1 class="subbookTitle">{line[2:]}</h1>') lest_line = 1 elif first: processed_lines.append(f'<h2 class="chapter">{line[2:]}</h2>') lest_line = 2 elif line.startswith('~'): if lest_line > 1: processed_lines.append(f'<h3 class="section">{line[2:]}</h3>') lest_line=3 elif lest_line == 1: processed_lines.append(f'<h2 class="chapter">{line[2:]}</h2>') elif lest_line == 0: processed_lines.append(f'<h1 class="bookTitle">{line[2:]}</h1>') elif line.startswith("!"): lest_line_2 = line[2:] elif line.startswith("$"): if len(line) >= 2: bookTitle = line[2:] elif line != "": if lest_line_2 != "": processed_lines.append('<p class="text">'+ lest_line_2 + " " + line + '</p>') lest_line_2 = "" else: processed_lines.append('<p class="text">' + line + '</p>') processed_lines_2 = [f'''<html xmlns="http://www.w3.org/1999/xhtml" lang="he" xml:lang="he" dir="rtl"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <head> <title>'''+bookTitle+f'''</title> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <meta http-equiv="content-language" content="he" /> </head> <body lang="he-IL" xml:lang="he-IL"> <div class="Basic-Text-Frame" dir="rtl">'''] for line in processed_lines: try: line_index+=1 next_line = processed_lines[line_index] if line.startswith(f'<h') and next_line.startswith(f'<h') and line[:15] == next_line[:15]: pass else: processed_lines_2.append(line) except IndexError: processed_lines_2.append(line) processed_lines_2.append(f''' </head> </div> <body> </html>''') # Join the processed lines back into HTML content processed_html = '\n'.join(processed_lines_2) # Write the modified HTML content to the output file with open(input_file, 'w', encoding='utf-8') as f: f.write(processed_html) print(f"processed: {input_file}") folder_path = r'.\Books' convert_in_folder(folder_path)
פשוט מעתיקים את תיקיית books מתיקיית ההתקנה של תורת אמת ומריצים על זה את הסקריפט
אח"כ מוסיפים לקליבר ,ממירים ואז מריצים את הסקריפט השני
שימו לב שהסקריפט משנה את הקבצים, כך שאין להריץ את הסקריפט על התיקייה המקורית בתורת אמת
שימו לב שיש שם ספרים שרק משמשים כחיבור בין הספר למפרשיו, הספרים עם טעמים לא מוצגים כראוי מכיון שבתורת אמת יש קידוד מיוחד לטעמים ושבתחילת כל ספר יש טקסט באנגלית, אולי ל @pcinfogmach יש רשימה של הספרים שלא מכילים כלום ואולי יש לו גם רעיון איך להסיר את הטקסט חסר המשמעות בתחילת הספרים -
@האדם-החושב כתב במדריך | ספרי ספריא ותורת אמת בepub בעזרת python + calibre:
אולי ל @pcinfogmach יש רשימה של הספרים שלא מכילים כלום
בגדול זה קבצים שמכילים בתוך השם שלהם את אחד מהמילים דלהלן
Interleave|merged|DebugMix@האדם-החושב כתב במדריך | ספרי ספריא ותורת אמת בepub בעזרת python + calibre:
ואולי יש לו גם רעיון איך להסיר את הטקסט חסר המשמעות בתחילת הספרים
בגדול זה השורה הראשונה במסמך כך שאם תעקוף את השורה הראשונה והשניה זה כבר יעזור אבל לא תמיד.
אישית אני עושה את זה על ידי איתור השורה הראשונה בה יש קידוד כותרות.מצו"ב רשימה של הטעמים והחלפותיהם (יש להקפיד על הסדר):
text = text.Replace(@"+\++\++\++\+", "֦"); text = text.Replace(@"\\\+\++\\\++", "֟"); text = text.Replace(@"+\+\\++++++\", "֝֗"); text = text.Replace(@"\++\\\+++++\\++\\\", "͘͘"); text = text.Replace(@"\++\\\\++\\\", "͘"); text = text.Replace(@"+\++\+\\\\++", "A8;A5;"); text = text.Replace(@"\+\\++", "֪"); text = text.Replace(@"+\\\\+", "֙"); text = text.Replace(@"\\\\++", "֙"); text = text.Replace(@"++\+\+", "֣"); text = text.Replace(@"\\\\\+", "֘"); text = text.Replace(@"\+\++\", "֒"); text = text.Replace(@"+++++\", "֗"); text = text.Replace(@"\\+++\", "֔"); text = text.Replace(@"+\+++\", "֕"); text = text.Replace(@"+\++\+", "֥"); text = text.Replace(@"\++++\", "֖"); text = text.Replace(@"+\\++\", "֑"); text = text.Replace(@"+\\+\+", "֡"); text = text.Replace(@"+\\\++", "֩"); text = text.Replace(@"\\\+\+", "֠"); text = text.Replace(@"\\+\\+", "֜"); text = text.Replace(@"\++\\+", "֞"); text = text.Replace(@"++++\+", "֧"); text = text.Replace(@"++\\\+", "֛"); text = text.Replace(@"\\++\+", "֤"); text = text.Replace(@"++\++\", "֓"); text = text.Replace(@"++\++\", "֚"); text = text.Replace(@"\+\\\+", "֚"); text = text.Replace(@"\++\++", "֮"); text = text.Replace(@"++\\++", "֫"); text = text.Replace(@"+\+\++", "֭"); text = text.Replace(@"+\+\\+", "֝"); text = text.Replace(@"\\+\++", "֬"); text = text.Replace(@"\\+\++", "֬");
-
@DAVID-3 כתב במדריך | ספרי ספריא ותורת אמת בepub בעזרת python + calibre:
א. האם אפשר הדרכה למי שלא מתמצא כלל בשורות קוד?
קצת מסובך, אני עובד כרגע על גיר' סופית ואני אעלה את הקבצים עצמם בלנ"ד לגיטהאב
ב. האם אפשר להמיר קובץ pdf עם צורה מסוימת (כגון תלמוד-צורת הדף) לפורמט epub ושהצורה תישאר?
תודהעקרונית אפשר בהמרה בתור תמונה, אבל למה שלא תשתמש בpdf עצמו?
-
@האדם-החושב
ראשית תודה רבה
קובץ PDF לא נוח לי כיון שאי אפשר לרשום עליו הערות באפליקציית קורא ספרים אלקטרוני -
@pcinfogmach
מה זה? -
אין לי זמן כרגע להאריך הנה תשובה מאת מכרנו chatgpt
הטכניקה הנפוצה להטבעת קבצי PDF בתוך דף HTML היא באמצעות תג <iframe>. ניתן להשתמש בתג זה כדי להציג את קובץ ה-PDF בתוך חלון בדף HTML.הנה דוגמה לכיצד לעשות זאת:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Embed PDF</title> </head> <body> <iframe src="example.pdf" width="600" height="780" style="border: none;"></iframe> </body> </html>
בדוגמה זו:
- ה-<iframe> מצביע לכתובת של קובץ ה-PDF באמצעות ה-attribut ה-
src
. width
ו-height
מגדירים את גודל ה-<iframe>.- ה-style "border: none;" מוסיף עיצוב נקי לקובץ ה-PDF.
כדי להשתמש בקובץ PDF מהמערכת שלך, פשוט כתוב את הנתיב המלא של הקובץ במקום "example.pdf" בתוך ה-attribut של
src
. - ה-<iframe> מצביע לכתובת של קובץ ה-PDF באמצעות ה-attribut ה-
-
@pcinfogmach
אין לי מושג בכתיבת קוד
איפה אני צריך להעתיק את השורות הנ״ל?
בשורת הפקודה? -
@pcinfogmach
ואז מה לעשות עם קובץ הhtml? -
@pcinfogmach
לא עשה שום דבר
חוץ מלפתוח חלון אינטרנט. -
@DAVID-3
תנסה לחקור את הנושא בעצמך אין לי מושג בעצמי רק שמעתי על זה פעם ואמרתי אולי ה עובד
https://pdf.wondershare.com/how-to/embed-pdf-in-html.html -
@האדם-החושב כתב במדריך | ספרי ספריא ותורת אמת בepub בעזרת python + calibre:
א. האם אפשר הדרכה למי שלא מתמצא כלל בשורות קוד?
קצת מסובך, אני עובד כרגע על גיר' סופית ואני אעלה את הקבצים עצמם בלנ"ד לגיטהאב
עדכון:
העליתי את תורת אמת לכאן:
https://github.com/zevisvei/epub-Jewish-books/tree/main -
הועלו גם שאר המאגרים חוץ מספריא, אני אעבוד על ספריא בבין הזמנים בלי נדר