🧑💻 improve code readability
This commit is contained in:
+51
-17
@@ -10,23 +10,23 @@ import shutil
|
|||||||
|
|
||||||
|
|
||||||
class Comic2PDF:
|
class Comic2PDF:
|
||||||
def __init__(self, src, dest, verbose=False, use_tempfile=False):
|
def __init__(self, src, dest, verbose=False, use_tempfile=True):
|
||||||
self.sort = Sorter()
|
self.sort = Sorter()
|
||||||
|
self.use_tempfile = use_tempfile
|
||||||
|
|
||||||
self.src = src
|
self.src = src
|
||||||
self.dest = dest
|
self.dest = dest
|
||||||
self.dest_temp_dir = os.path.join(dest, "tmp")
|
self.dest_temp_dir = os.path.join(dest, "tmp")
|
||||||
self.define_temp = (
|
|
||||||
tempfile.TemporaryDirectory() if use_tempfile else self.dest_temp_dir
|
if use_tempfile:
|
||||||
)
|
self.define_temp = tempfile.TemporaryDirectory()
|
||||||
self.temp_dir = (
|
self.temp_dir = self.define_temp.name
|
||||||
self.define_temp.name
|
else:
|
||||||
if isinstance(self.define_temp, tempfile.TemporaryDirectory)
|
self.define_temp = self.dest_temp_dir
|
||||||
else self.define_temp
|
self.temp_dir = self.define_temp
|
||||||
)
|
os.makedirs(self.dest_temp_dir, exist_ok=True)
|
||||||
|
|
||||||
os.makedirs(self.dest, exist_ok=True)
|
os.makedirs(self.dest, exist_ok=True)
|
||||||
os.makedirs(self.dest_temp_dir, exist_ok=True)
|
|
||||||
os.makedirs(self.temp_dir, exist_ok=True)
|
os.makedirs(self.temp_dir, exist_ok=True)
|
||||||
|
|
||||||
log.info(f"Source: {self.src}")
|
log.info(f"Source: {self.src}")
|
||||||
@@ -35,29 +35,52 @@ class Comic2PDF:
|
|||||||
log.debug(f"Dest Temp Dir: {self.dest_temp_dir}")
|
log.debug(f"Dest Temp Dir: {self.dest_temp_dir}")
|
||||||
|
|
||||||
def __del__(self):
|
def __del__(self):
|
||||||
|
if isinstance(self.define_temp, tempfile.TemporaryDirectory):
|
||||||
|
log.debug(f"Deleting: {self.temp_dir}")
|
||||||
|
self.define_temp.cleanup()
|
||||||
|
else:
|
||||||
delete_it = True
|
delete_it = True
|
||||||
try:
|
try:
|
||||||
if delete_it:
|
if delete_it and self.use_tempfile is False:
|
||||||
log.debug(f"Deleting: {self.dest_temp_dir}")
|
log.debug(f"Deleting: {self.dest_temp_dir}")
|
||||||
shutil.rmtree(self.dest_temp_dir)
|
shutil.rmtree(self.dest_temp_dir)
|
||||||
|
|
||||||
|
else:
|
||||||
|
pass
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
log.error(e)
|
log.error(e)
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
if os.path.isfile(self.src):
|
if os.path.isfile(self.src) and (
|
||||||
|
self.src.endswith(".cbz") or self.src.endswith(".cbr")
|
||||||
|
):
|
||||||
self.extract(self.src)
|
self.extract(self.src)
|
||||||
self.convert(self.src)
|
self.convert(self.src)
|
||||||
|
|
||||||
else:
|
elif os.path.isdir(self.src):
|
||||||
|
queue = 1
|
||||||
scanned_folder = self.scan(self.src)
|
scanned_folder = self.scan(self.src)
|
||||||
log.debug(f"scanned folder: {scanned_folder}")
|
log.debug(f"scanned folder: {scanned_folder}")
|
||||||
for root, dirs, files in os.walk(self.src):
|
for root, dirs, files in os.walk(self.src):
|
||||||
for file in files:
|
for file in files:
|
||||||
log.info("="*30)
|
txt = f" [{queue}/{len(scanned_folder)}] Progress "
|
||||||
|
centered_txt = txt.center(45, "=")
|
||||||
|
log.info(centered_txt)
|
||||||
|
|
||||||
self.__del__()
|
self.__del__()
|
||||||
os.makedirs(self.temp_dir)
|
os.makedirs(self.temp_dir, exist_ok=True)
|
||||||
|
log.debug(f"Created {self.temp_dir}")
|
||||||
|
|
||||||
self.extract(file)
|
self.extract(file)
|
||||||
self.convert(file)
|
self.convert(file, extract_to_folder=True)
|
||||||
|
|
||||||
|
queue += 1
|
||||||
|
|
||||||
|
log.info("=== ✅ Finished ===")
|
||||||
|
|
||||||
|
else:
|
||||||
|
log.error("Unknown file type.")
|
||||||
|
exit()
|
||||||
|
|
||||||
def scan(self, dir):
|
def scan(self, dir):
|
||||||
log.info(f"Scanning {dir}")
|
log.info(f"Scanning {dir}")
|
||||||
@@ -81,18 +104,29 @@ class Comic2PDF:
|
|||||||
|
|
||||||
log.info("Extraction Complete")
|
log.info("Extraction Complete")
|
||||||
|
|
||||||
def convert(self, file):
|
def convert(self, file, extract_to_folder=False):
|
||||||
log.info("Converting to pdf...")
|
log.info("Converting to pdf...")
|
||||||
imgs = []
|
imgs = []
|
||||||
imgs = self.scan(self.temp_dir)
|
imgs = self.scan(self.temp_dir)
|
||||||
basename = os.path.basename(file)
|
basename = os.path.basename(file)
|
||||||
name = os.path.splitext(basename)[0]
|
name = os.path.splitext(basename)[0]
|
||||||
|
|
||||||
|
if extract_to_folder:
|
||||||
|
folder_basename = os.path.basename(self.src)
|
||||||
|
folder = os.path.join(self.dest, f"{folder_basename}")
|
||||||
|
os.makedirs(folder, exist_ok=True)
|
||||||
|
pdf_path = os.path.join(folder, f"{name}.pdf")
|
||||||
|
else:
|
||||||
pdf_path = os.path.join(self.dest, f"{name}.pdf")
|
pdf_path = os.path.join(self.dest, f"{name}.pdf")
|
||||||
|
|
||||||
|
log.info(f"Path to conversion: {pdf_path}")
|
||||||
|
log.info(f"Extract to folder is set to {extract_to_folder}")
|
||||||
with open(pdf_path, "wb") as f:
|
with open(pdf_path, "wb") as f:
|
||||||
f.write(img2pdf.convert(imgs))
|
f.write(img2pdf.convert(imgs))
|
||||||
|
|
||||||
log.info("Conversion complete")
|
log.info("Conversion complete")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
comic2pdf = Comic2PDF(src, dest, verbose)
|
comic2pdf = Comic2PDF(src, dest, verbose)
|
||||||
comic2pdf.run()
|
comic2pdf.run()
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ if verbose:
|
|||||||
else:
|
else:
|
||||||
logging.basicConfig(level=logging.INFO, format="[%(levelname)s] - %(message)s")
|
logging.basicConfig(level=logging.INFO, format="[%(levelname)s] - %(message)s")
|
||||||
log = logging.getLogger()
|
log = logging.getLogger()
|
||||||
|
logging.getLogger('img2pdf').setLevel(logging.CRITICAL)
|
||||||
|
logging.getLogger('patoolib').setLevel(logging.CRITICAL)
|
||||||
|
|
||||||
# got this from the internet
|
# got this from the internet
|
||||||
class Sorter:
|
class Sorter:
|
||||||
|
|||||||
Reference in New Issue
Block a user