From 9850e93d89b659a9d48c7ec3a238b9554b50c6e7 Mon Sep 17 00:00:00 2001 From: HackerNCoder Date: Fri, 23 Feb 2024 01:16:45 +0100 Subject: [PATCH] cook: More compat. Add class args --- cook.py | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/cook.py b/cook.py index 77356e7..67db092 100644 --- a/cook.py +++ b/cook.py @@ -1,11 +1,27 @@ from zipfile import ZipFile from pathlib import Path -import os, sys, time, re, shutil, subprocess +import os, sys, time, re, shutil, argparse -file_name = sys.argv[1] +parser = argparse.ArgumentParser("epub cooking") +parser.add_argument("--cc", metavar="CHAPTERS_CLASS", help="The class used in chapters. (default: hlink)", type=str) +parser.add_argument("--fc", metavar="FOOTNOTES_CLASS", help="The class used in footnotes. (default: hanging1)", type=str) +#parser.add_argument("--test", help="Test a link or footnote against the regex. (NotImplemented)", type=bool) +parser.add_argument("file", help="The file to be worked on.", type=str) +args = parser.parse_args() + +file_name = args.file files_to_work_on = [] files_to_zip = [] +if args.cc: + chapter_class = args.cc +else: + chapter_class = "hlink" #VHS: Change hlink, this is the class found in the chapters +if args.fc: + footnotes_class = args.fc +else: + footnotes_class = "hanging1" # VHS: Change hanging1, this is the class found in the footnotes + def progressbar(it, prefix="", size=60, out=sys.stdout): # Python3.6+ count = len(it) start = time.time() @@ -43,28 +59,28 @@ with ZipFile(file_name, 'r') as zip: files_to_work_on.append(filename) Path("work").mkdir(parents=True, exist_ok=True) -Path(f"work/{files_to_work_on[0].split('/')[0]}").mkdir(parents=True, exist_ok=True) +Path(f"work/{files_to_work_on[2].split('/')[0]}").mkdir(parents=True, exist_ok=True) print(f"Cooking on {file_name}, with {len(files_to_work_on)} files in it") -for file in progressbar(files_to_work_on, "", 40): +for file in files_to_work_on: #progressbar(files_to_work_on, "", 40): with open(file, 'r') as epub_file: text = epub_file.read() - test = re.findall('id="toc"', text) + test = re.findall('id="toc"|epub:type="toc"', text) if test: continue - matches = re.findall('', text) + matches = re.findall(f'', text) if matches: for match in matches: if match[0] != '': for dd in files_to_work_on: if re.search(f".*?{match[0]}.*?", dd): with open(dd, 'r') as source: - source_match = re.search(f"

.*?

", source.read()) # VHS: Change hanging1 + source_match = re.search(f"

", source.read()) if source_match: source_match_fixed = re.sub('[\.\s ]*(.*?)<\/p>', rf'\2

', source_match.group()) source_match_fixed = re.sub('

', r'

', source_match_fixed) - fixed_text = re.sub(f"", f"", text) + fixed_text = re.sub(f"", f"", text) text = re.sub(f"\n\s*", f"\n{source_match_fixed}\n", fixed_text) with open(f"work/{file}", 'w') as output: output.write(text) @@ -77,4 +93,4 @@ with ZipFile("output.epub", 'a') as zip: for file in files_to_zip: zip.write(f"work/{file}", file) -# shutil.rmtree("work") +shutil.rmtree("work")