Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import re
- from webptools import webplib as webp
- def get_files(folder, file_types: tuple = ('.png', '.jpg', '.jpeg'), sort_list: bool = False):
- file_tree = []
- for sub_folder in [folder for folder, _, _ in os.walk(folder)]:
- (_, _, filenames) = next(os.walk(sub_folder))
- for file in filenames:
- if file.lower().endswith(tuple(file_types)):
- file_path = os.path.join(sub_folder, file)
- file_tree.append((file_path, os.path.getsize(file_path)))
- else:
- print(f'{file} does not match any of the specified filetypes')
- if not sort_list:
- return file_tree
- file_tree.sort(key=lambda x: x.split('/')[-1].split('_')[0], reverse=False)
- return file_tree
- def webp_conversion(file_name: str, file_size, quality: int = 100):
- result = webp.cwebp(f'"{file_name}"', f'"{file_name.rsplit(".", 1)[0]}.webp"', "-q " + str(quality))['stderr']
- size = int(re.findall(re.compile(b"Output: *(\d+) *bytes"), result)[0])
- name = file_name.split('\\')[-1]
- print(f"Name: {name}, size: {int((size / file_size) * 100)}% of org")
- path = r'C:\Users\Suppe\Desktop\test'
- files = get_files(path)
- for file_path, file_size in files:
- webp_conversion(file_path, file_size, quality=90)
Add Comment
Please, Sign In to add comment