import os, sys, shutil
import exifread, datetime
from exif import Image

#dircont = 'Q:\\Pictures\From phone'
dircont = 'C:\Pictures\Colin Pictures\\'
directory = os.listdir(dircont)
pic = 1
for files in directory:
    #if files.endswith(('jpg', 'JPG', 'png', 'PNG', 'tiff', 'TIFF', '3gp', 'AVI', 'BMP', 'MP4', 'psf')):
    if files.endswith(('')):
        found = False
        origdate = False
        tardate = False
        digdate =False
        file_path = os.path.join(dircont, files)
        print(str(pic) + " " + file_path)
        pic = pic + 1
        try:
            f = open(file_path, 'rb')
        except:
            continue
        tags = exifread.process_file(f)
        if len(tags) == 0:
            #print("No EXIF Data")
            source = f.name
            target = "C:/Pictures/No EXIF/" + "No EXIF Data " + files
            #target = "C:/Pictures/No EXIF/" + files
            try:
                shutil.copy(source, target)
            except IOError as e:
                print("Unable to copy file. %s" % e)
            except:
                print("Unexpected error:", sys.exc_info())
            found = True
        for tag in tags.keys():
            if found == False:
                if tag in ('Image Software') :
                    #print("Key: %s, value %s" % (tag, tags[tag]))
                    imagesoftware = ("Key: %s, value %s" % (tag, tags[tag]))
                    imgsw = (imagesoftware[-19:])
                    #print(imgsw)
                    if imgsw == "MP Navigator EX 5.0":         
                        #print("Scanned from Paper Original....")
                        source = f.name
                        target = "C:/Pictures/Scanned/" + "Scanned picture " + files
                        #target = "C:/Pictures/Scanned/" + files
                        try:
                            shutil.copy(source, target)
                        except IOError as e:
                            print("Unable to copy file. %s" % e)
                        except:
                            print("Unexpected error:", sys.exc_info())
                        found = True
                if tag in ('Image DateTime'):
                    #print("Key: %s, value %s" % (tag, tags[tag]))
                    ImageDateTime = ("Key: %s, value %s" % (tag, tags[tag]))
                    tgtdate = (ImageDateTime[-19:])
                    tgtdate = tgtdate.replace(":", "-")
                    tardate = True
                    #print(tgtdate)
                if tag in ('EXIF DateTimeOriginal'):
                    #print("Key: %s, value %s" % (tag, tags[tag]))
                    originalDateTime = ("Key: %s, value %s" % (tag, tags[tag]))
                    origtgtdate = (originalDateTime[-19:])
                    origtgtdate = origtgtdate.replace(":", "-")
                    origdate = True
                    #print(origtgtdate)
                if tag in ('EXIF DateTimeDigitized'):
                    #print("Key: %s, value %s" % (tag, tags[tag]))
                    digitalDateTime = ("Key: %s, value %s" % (tag, tags[tag]))
                    digtgtdate = (digitalDateTime[-19:])
                    digtgtdate = digtgtdate.replace(":", "-")
                    digdate = True
                    #print(digtgtdate)
                    found = True
                if origdate and found:
                    source = f.name
                    target = "C:/Pictures/Renamed/" + origtgtdate + " " + files
                    #target = "C:/Pictures/Renamed/" + files
                    try:
                        shutil.copy(source, target)
                    except IOError as e:
                        print("Unable to copy file. %s" % e)
                    except:
                        print("Unexpected error:", sys.exc_info())
                elif tardate and found:
                    source = f.name
                    target = "C:/Pictures/Renamed/" + tgtdate + "_" + files
                    #target = "C:/Pictures/Renamed/" + files
                    try:
                        shutil.copy(source, target)
                    except IOError as e:
                        print("Unable to copy file. %s" % e)
                    except:
                        print("Unexpected error:", sys.exc_info())
                elif digdate and found:
                    source = f.name
                    target = "C:/Pictures/Renamed/" + digtgtdate + "_" + files
                    #target = "C:/Pictures/Renamed/" + files
                    try:
                        shutil.copy(source, target)
                    except IOError as e:
                        print("Unable to copy file. %s" % e)
                    except:
                        print("Unexpected error:", sys.exc_info())
                else:
                    continue
        if found == False:
            ctime = os.path.getmtime(file_path)
            dt_c = datetime.datetime.fromtimestamp(ctime)
            dt_cc = str(dt_c)
            dt_cc = dt_cc[:19]
            dt_cc = dt_cc.replace(":", "-")
            print(dt_cc)
            source = f.name
            target = "C:/Pictures/Others/" + dt_cc + "_" + files
            try:
                shutil.copy(source, target)
            except IOError as e:
                print("Unable to copy file. %s" % e)
            except:
                print("Unexpected error:", sys.exc_info())
exit()

with open("Chas.jpg", "rb") as dog_1_file:
    dog_1_image = Image(dog_1_file)
    
with open("Milo.jpg", "rb") as dog_2_file:
    dog_2_image = Image(dog_2_file)

dognames = [dog_1_file.name, dog_2_file.name]
    
images = [dog_1_image, dog_2_image]

###############################################

#for index, image in enumerate(images):
#    if image.has_exif:
#        status = f"contains EXIF (version {image.exif_version}) information."
#    else:
#        status = "does not contain any EXIF information."
#    print(f"Image {index} {status}")


################################################

image_members = []

for image in images:
    image_members.append(dir(image))

#for index, image_member_list in enumerate(image_members):
#    print(f"Image {index} contains {len(image_member_list)} members:")
#    print(f"{image_member_list}\n")

################################################

#common_members = set(image_members[0]).intersection(set(image_members[1]))
#common_members_sorted = sorted(list(common_members))
#print("Image 0 and Image 1 have these members in common:")
#print(f"{common_members_sorted}")

#################################################################

#for index, image in enumerate(images):
#    print(f"Device information - Image {index}")
#    print("----------------------------")
#    print(f"Make: {image.make}")
#    print(f"Model: {image.model}\n")


####################################################################

#for index, image in enumerate(images):
#    print(f"Lens and OS - Image {index}")
#    print("---------------------")
#    print(f"Lens make: {image.get('lens_make', 'Unknown')}")
#    print(f"Lens model: {image.get('lens_model', 'Unknown')}")
#    print(f"Lens specification: {image.get('lens_specification', 'Unknown')}")
#    print(f"OS version: {image.get('software', 'Unknown')}\n")
#    print()
#    print()
#    print()
#    print()
#    print()
#    print()
    

########################################################################

for index, image in enumerate(images):
    print(f"Date/time taken - Image {index}")
    print("-------------------------")
    print(f"{image.datetime_original} {image.get('offset_time', '')}\n")
    newdate = image.datetime_original
    newdate = newdate.replace(":", "_")
    newdate = newdate.replace(" ", "_")
    print(newdate)
    oldname = dognames[index]
    print(oldname)
    newname = newdate + "_" + oldname
    print(newname)
    os.rename(oldname, newname)

#################################################################

#for index, image in enumerate(images):

    
    
    #with open('./images/hotel without tags.jpg', 'wb') as updated_hotel_file:
        #updated_hotel_file.write(hotel_image.get_file())



