The script will process all .webp images in the specified directory, remove accents from filenames, and handle potential naming collisions as discussed earlier.
Change non latin characters letters to latin characters.
be sure to install “pip install Pillow unidecode”
import os
from unidecode import unidecode
from PIL import Image
def remove_accents(input_str):
return unidecode(input_str)
def rename_with_check(original_path, new_name):
base, extension = os.path.splitext(new_name)
counter = 1
new_path = os.path.join(os.path.dirname(original_path), new_name)
# Check for files that might have the same name considering case insensitivity
while os.path.exists(new_path) or any(fname.lower() == new_name.lower() for fname in os.listdir(os.path.dirname(original_path))):
new_name = f"{base}_{counter}{extension}"
new_path = os.path.join(os.path.dirname(original_path), new_name)
counter += 1
os.rename(original_path, new_path)
return new_name
def process_images(directory):
# Check each file in the given directory
for filename in os.listdir(directory):
if filename.endswith('.webp'):
# Construct the full file path
filepath = os.path.join(directory, filename)
# Open and immediately save the image to ensure it's a valid image
with Image.open(filepath) as img:
img.save(filepath)
# Remove accents from the filename
new_name = remove_accents(filename)
# Rename the file with a check for existing names
final_name = rename_with_check(filepath, new_name)
print(f"Processed {filename} -> {final_name}")
if __name__ == "__main__":
directory = input("Enter the directory containing the webp images: ")
process_images(directory)