Suppenbiatch

Untitled

Nov 28th, 2020 (edited)
755
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.29 KB | None | 0 0
  1. import os
  2. import re
  3.  
  4. from webptools import webplib as webp
  5.  
  6.  
  7. def get_files(folder, file_types: tuple = ('.png', '.jpg', '.jpeg'), sort_list: bool = False):
  8.     file_tree = []
  9.     for sub_folder in [folder for folder, _, _ in os.walk(folder)]:
  10.         (_, _, filenames) = next(os.walk(sub_folder))
  11.         for file in filenames:
  12.             if file.lower().endswith(tuple(file_types)):
  13.                 file_path = os.path.join(sub_folder, file)
  14.                 file_tree.append((file_path, os.path.getsize(file_path)))
  15.             else:
  16.                 print(f'{file} does not match any of the specified filetypes')
  17.     if not sort_list:
  18.         return file_tree
  19.     file_tree.sort(key=lambda x: x.split('/')[-1].split('_')[0], reverse=False)
  20.     return file_tree
  21.  
  22.  
  23. def webp_conversion(file_name: str, file_size, quality: int = 100):
  24.     result = webp.cwebp(f'"{file_name}"', f'"{file_name.rsplit(".", 1)[0]}.webp"', "-q " + str(quality))['stderr']
  25.     size = int(re.findall(re.compile(b"Output: *(\d+) *bytes"), result)[0])
  26.     name = file_name.split('\\')[-1]
  27.     print(f"Name: {name}, size: {int((size / file_size) * 100)}% of org")
  28.  
  29.  
  30. path = r'C:\Users\Suppe\Desktop\test'
  31. files = get_files(path)
  32.  
  33. for file_path, file_size in files:
  34.     webp_conversion(file_path, file_size, quality=90)
  35.  
Add Comment
Please, Sign In to add comment