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