-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathrename.py
121 lines (106 loc) · 3.53 KB
/
rename.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import os
import sys
import argparse
import datetime
import exifread
import shutil
import re
import time
# helper functions==============================================================
def get_exif(filename):
f = open(filename, "rb")
tags = exifread.process_file(f)
f.close()
return tags
def get_date(tags):
date = str(tags["EXIF DateTimeOriginal"])
date = date.replace(":", "")
date = date.replace(" ", "")
return date[0:8] + "_" + date[8:12]
def get_alternate_date(filename):
date = str(time.ctime(os.path.getmtime(filename)))
date = date.replace(":", "")
date = date.replace(" ", "")
final_date = date[-4:];
#convert month to number
if(date[3:6] == "Jan"):
final_date += "01"
elif(date[3:6] == "Feb"):
final_date += "02"
elif(date[3:6] == "Mar"):
final_date += "03"
elif(date[3:6] == "Apr"):
final_date += "04"
elif(date[3:6] == "May"):
final_date += "05"
elif(date[3:6] == "Jun"):
final_date += "06"
elif(date[3:6] == "Jul"):
final_date += "07"
elif(date[3:6] == "Aug"):
final_date += "08"
elif(date[3:6] == "Sep"):
final_date += "09"
elif(date[3:6] == "Oct"):
final_date += "10"
elif(date[3:6] == "Nov"):
final_date += "11"
elif(date[3:6] == "Dec"):
final_date += "12"
#add date_time
if (len(date) == 17):
final_date += "0"+date[6] + "_" + date[7:11]
else :
final_date += date[6:8] + "_" + date[8:12]
return final_date
#change file names based on extention===========================================
def work(filename, extension):
tags = get_exif(filename)
date = get_date(tags)
# rename image file to YYYYMMDD_HHMMSS format.
# if file already exists, add numbering to the end of the file name
if os.path.exists(date+extension):
i = 1
while True:
if os.path.exists(date+"_"+str(i)+extension):
i += 1
else:
os.rename(filename, date+"_"+str(i)+extension)
print(date+"_"+str(i)+extension)
break
else:
os.rename(filename, date+extension)
print(date+extension)
def work_alternate(filename, extension):
date = get_alternate_date(filename)
# rename image file to YYYYMMDD_HHMMSS format.
# if file already exists, add numbering to the end of the file name
if os.path.exists(date+extension):
i = 1
while True:
if os.path.exists(date+"_"+str(i)+extension):
i += 1
else:
os.rename(filename, date+"_"+str(i)+extension)
print(date+"_"+str(i)+extension)
break
else:
os.rename(filename, date+extension)
print(date+extension)
#===============================================================================
def work_all(directory):
valid_extensions = [".HEIC", ".heic", ".JPG", ".jpg", ".JPEG", ".jpeg", ".PNG", ".png", ".MOV", ".mov", ".MP4", ".mp4"]
for filename in os.listdir(directory):
extension = os.path.splitext(filename)[1]
# If the file does not have a valid extension, skip it
if(extension not in valid_extensions):
continue
try:
work(filename, extension)
except:
# print("Error: " + filename)
work_alternate(filename, extension)
continue
#main===========================================================================
# . indicates all files in current directory
work_all(".")