Project
Description
This is a basic Description
import os from pathlib import Path from tkinter import * from tkinter import filedialog from natsort import natsorted, ns from PIL import Image import sys import winsound import subprocess import stat as st def cls(): os.system('cls' if os.name == 'nt' else 'clear') # def get_folder(extensions: list = None, include_subs: bool = False): # root = Tk() # p = Path(filedialog.askdirectory(title="Select A Folder")) # single file option # root.destroy() # pattern = '**/*' if include_subs else '*' # # return [x for x in p.glob(pattern) if not extensions or x.suffix in extensions] def get_folder_dialog(): root = Tk() p = Path(filedialog.askdirectory(title="Select A Folder")) # single file option root.destroy() return p if p.drive else None def get_files_in_folder(folder_path: Path, extensions: list = None, include_subs: bool = False): # pattern = '**/*' if include_subs else '*' if not folder_path: raise RuntimeError('Folder path is empty!') files_all = folder_path.glob('**/*' if include_subs else '*') if extensions: files_filtered = [] for file in files_all: files_filtered.append(file) if file.suffix in extensions else print(f'Skipping file based on extension: {file.stem}') return files_filtered return files_all # def multi_file(): # folder = get_folder_dialog() # files = get_files_in_folder(folder_path=folder, extensions=['.jpg', 'jpeg', '.png']) # # if len(files) <= 0: # # sys.exit() # # folder = files[0].parents[0] # # file_names = [file.name for file in files] # return folder, [f.name for f in files] # Press the green button in the gutter to run the script. def main(folder= None): # folder, files = multi_file() if not folder: folder = get_folder_dialog() pdf_name = folder.name + '.pdf' pdf_path = folder.parents[0] / pdf_name if pdf_path.is_file(): print('pdf already exists, skipping...') return # i = input(f'PDF {pdf_path.name} already exists! Enter \'y\' to overwrite, or anything else to skip\n') # if i.strip().lower() != 'y': # return # else: # print('Continuing and overwriting pdf...') files = get_files_in_folder(folder_path=folder, extensions=['.jpg', 'jpeg', '.png']) file_names = [f.name for f in files] files_sorted = natsorted(file_names, key=lambda y: y.lower()) if file_names != files_sorted: print('Lists are not the same!') print(f'{files=}') print(f'{files_sorted=}') input('press any key to stop') return print('\n\n...Opening and converting images...') for file in files_sorted: print(file) images = [Image.open(folder / file).convert('RGB') for file in files_sorted] print(f'...Saving {pdf_path.name}...') images[0].save(pdf_path, resolution=100.0, save_all=True, append_images=images[1:])
Header
Basic header info
Main part 1
Body
Main part 2
Body