sinanisler logo

Change non latin characters letters to latin characters

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)

 

Leave the first comment