Skip to content

Instantly share code, notes, and snippets.

@Ozhcar
Last active April 5, 2021 18:03
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Ozhcar/ea580e1dab966b7b12cd250b4a33fe5f to your computer and use it in GitHub Desktop.
Save Ozhcar/ea580e1dab966b7b12cd250b4a33fe5f to your computer and use it in GitHub Desktop.
For my dad
from PIL import Image, ImageFont, ImageDraw
import glob
import os
import re
import time
""""""
dir_to_watch_name = './to_watch'
watch_every = 10
""""""
check_counter = 1
created = []
renamed = []
def create_image(dir_name):
dir_first_letter = dir_name[0]
for item in glob.glob(f'{dir_to_watch_name}/{dir_name}/*__000.jpg'):
os.remove(item)
dir_image = Image.new('RGB', (800, 600), color='red')
dir_image_draw = ImageDraw.Draw(dir_image)
dir_image_text = dir_name
dir_image_text_font = ImageFont.truetype('arial.ttf', 100)
dir_image_text_w, dir_image_text_h = dir_image_draw.textsize(dir_image_text,
font=dir_image_text_font)
dir_image_draw.text((((dir_image.width - dir_image_text_w) / 2),
((dir_image.height - dir_image_text_h) / 2)),
dir_image_text, fill='white', font=dir_image_text_font)
dir_image.save(f'{dir_to_watch_name}/{dir_name}/{dir_first_letter}__000.jpg')
created.append(f'"{dir_first_letter}__000.jpg"')
def rename_file(dir_name, old_file_name):
counter = 1
dir_first_letter = dir_name[0]
old_file_name_cut = old_file_name
match_old_item = re.compile(r'(\w)_').search(old_file_name)
match_old_item = match_old_item.group(1) if match_old_item else None
if match_old_item and match_old_item != dir_first_letter:
old_file_name_cut = old_file_name[2:]
if os.path.exists(f'{dir_to_watch_name}/{dir_name}/{dir_first_letter}_{old_file_name_cut}'):
while True:
file_name, file_extension = os.path.splitext(old_file_name_cut)
file_name = f'{file_name}_{counter}'
new_file = f'{file_name}{file_extension}'
if not os.path.exists(f'{dir_to_watch_name}/{dir_name}/{dir_first_letter}_{new_file}'):
break
counter += 1
else:
new_file = old_file_name_cut
os.rename(f'{dir_to_watch_name}/{dir_name}/{old_file_name}',
f'{dir_to_watch_name}/{dir_name}/{dir_first_letter}_{new_file}')
renamed.append(f'"{old_file_name}" to "{dir_first_letter}_{new_file}"')
def check_every_file():
for directory in os.listdir(f'{dir_to_watch_name}'):
dir_first_letter = directory[0]
if f'{dir_first_letter}__000.jpg' not in os.listdir(f'{dir_to_watch_name}/{directory}'):
create_image(directory)
for file in os.listdir(f'{dir_to_watch_name}/{directory}'):
if not file.startswith(f'{dir_first_letter}'):
rename_file(directory, file)
print(f'Check {check_counter} :')
if created:
print(f'\tCreated ({len(created)}) :', ', '.join(created))
else:
print('\tDid not create any directory image')
if renamed:
print(f'\tRenamed ({len(renamed)}) :', ', '.join(renamed))
else:
print('\tDid not rename any file')
while True:
check_every_file()
check_counter += 1
created.clear()
renamed.clear()
time.sleep(watch_every)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment