Skip to content

Instantly share code, notes, and snippets.

@castaneai
Created April 11, 2018 14:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save castaneai/8285478ffacafeab038b71822a25239b to your computer and use it in GitHub Desktop.
Save castaneai/8285478ffacafeab038b71822a25239b to your computer and use it in GitHub Desktop.
for migrating screenshots
import os
import glob
import datetime
import shutil
datetime_formats = [
'%Y_%m_%d_%H_%M_%S',
'%Y_%m_%d_%H'
]
def getor(list, i, default=0):
try:
v = list[i]
if v.isdigit():
return int(v)
return default
except IndexError:
return default
def move_to_cannot_parse(f):
dir = os.path.dirname(f)
to_dir = os.path.join('./cannot_parse', dir)
os.makedirs('./cannot_parse/' + dir, exist_ok=True)
to_path = os.path.join(to_dir, os.path.basename(f))
shutil.move(f, to_path)
print('{} -> {}'.format(f, to_path))
for f in glob.glob("./**/*.*", recursive=True):
ext = os.path.splitext(os.path.basename(f))[1]
if ext.lower() not in [".png", ".jpg", ".bmp"]:
continue
fname = os.path.splitext(os.path.basename(f))[0]
parts = fname.split("_")
year = getor(parts, 0)
month = getor(parts, 1, 1)
day = getor(parts, 2, 1)
hour = getor(parts, 3)
minute = getor(parts, 4)
second = getor(parts, 5)
if year == 0:
print("cannot parse (year: 0): ", f)
move_to_cannot_parse(f)
continue
try:
dt = datetime.datetime(year, month, day, hour, minute, second)
os.utime(f, (dt.timestamp(), dt.timestamp()))
except ValueError:
print("cannot parse (value error): ", f)
move_to_cannot_parse(f)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment