Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import sys
- import zipfile
- import shutil
- from PIL import Image
- from PyPDF2 import PdfMerger
- from slashr import SlashR
- sr = None
- DIR = "" or (
- sys.argv[1]
- if len(sys.argv) > 1 and os.path.isdir(sys.argv[1])
- else input("Directory: ")
- )
- def progress(done: int, total: int):
- sr.print(f"{done} / {total}")
- def handle_file(path):
- if not path.lower().endswith(".cbz"):
- return
- print(f"PROCESS {os.path.basename(path)}")
- temp_dir = os.path.join(DIR, "temp")
- pdf_dir = os.path.join(DIR, "temp_pdfs")
- if os.path.exists(temp_dir):
- shutil.rmtree(temp_dir)
- if os.path.exists(pdf_dir):
- shutil.rmtree(pdf_dir)
- os.makedirs(temp_dir)
- os.makedirs(pdf_dir)
- with zipfile.ZipFile(path, 'r') as zip_ref:
- file_list = zip_ref.namelist()
- total_steps = len(file_list) * 2 + 1
- for i, file in enumerate(file_list):
- zip_ref.extract(file, temp_dir)
- progress(i + 1, total_steps)
- images = sorted([
- os.path.join(temp_dir, f)
- for f in os.listdir(temp_dir)
- if f.lower().endswith((".png", ".jpg", ".jpeg", ".bmp", ".webp"))
- ])
- if images:
- pdf_paths = []
- for i, img_path in enumerate(images):
- pdf_path = os.path.join(pdf_dir, f"{i}.pdf")
- img = Image.open(img_path).convert("RGB")
- img.save(pdf_path, "PDF", resolution=100.0)
- img.close()
- pdf_paths.append(pdf_path)
- progress(len(file_list) + i + 1, total_steps)
- merger = PdfMerger()
- for pdf in pdf_paths:
- merger.append(pdf)
- out_path = os.path.splitext(path)[0] + ".pdf"
- merger.write(out_path)
- merger.close()
- progress(total_steps - 1, total_steps)
- shutil.rmtree(temp_dir)
- shutil.rmtree(pdf_dir)
- progress(total_steps, total_steps)
- def main():
- global sr
- for file in os.listdir(DIR):
- path = os.path.join(DIR, file)
- if os.path.isfile(path):
- with SlashR() as sr:
- handle_file(path)
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement