Skip to content

Instantly share code, notes, and snippets.

@laurobmb
Last active April 2, 2021 17:58
Show Gist options
  • Select an option

  • Save laurobmb/b433c27d939c7283b00fc7718648ed9f to your computer and use it in GitHub Desktop.

Select an option

Save laurobmb/b433c27d939c7283b00fc7718648ed9f to your computer and use it in GitHub Desktop.
Script for photo organizer: this script organizes of files in directories "year_month_day"
from PIL import Image
import os
from datetime import datetime
import shutil
import glob
class MeuOrganizador:
DATETIME_EXIF_INFO_ID = 36867
extensions = ['CR2','JPG','MP4','jpg','png','jpeg','gif','PNG','mp4','mov','3gp']
def photo_shoot_data(self,file):
try:
photo = Image.open(file)
except:
date = datetime.fromtimestamp(os.path.getmtime(file))
try:
info = photo._getexif()
if self.DATETIME_EXIF_INFO_ID in info:
date = info[self.DATETIME_EXIF_INFO_ID]
date = datetime.strptime(date, '%Y:%m:%d %H:%M:%S')
else:
date = datetime.fromtimestamp(os.path.getmtime(file))
except:
date = datetime.fromtimestamp(os.path.getmtime(file))
return date
def get_folder_path(self,file):
date = self.photo_shoot_data(file)
return date.strftime('%Y')+'/'+date.strftime('%Y_%m_%d')
def move_photo(self,file):
new_folder = self.get_folder_path(file)
if not os.path.exists(new_folder):
os.makedirs(new_folder)
shutil.move(file, new_folder+'/'+file)
def organizador(self):
for k in self.extensions:
for name in glob.glob('*.'+k):
print('Movendo arquivo =>',name)
self.move_photo(name)
PHOTO = MeuOrganizador()
PHOTO.organizador()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment