Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os, shutil, json
- from PIL import Image, ExifTags
- # folderPath = input("Enter the folder name:")
- folderPath = "/home/robertvari/Documents/photos/"
- destinationFolder = folderPath + "DATE_"
- finalText = ""
- if os.path.exists(folderPath):
- files = [ photo for photo in os.listdir(folderPath) if photo.lower().endswith(".jpg") or photo.lower().endswith(".png")] #a mappában jpg és png file-ok vannak
- for imagePath in files:
- img = Image.open( folderPath + imagePath )
- photoData = img._getexif() #fotok adatai kimentve dictionary-be
- if not photoData: continue
- # előbb létrehozzuk a szukséges változókat None-al
- # ez a módszer azért jó mert simán lehet olyan fotó ahol nincs meg minden adat
- # a text file-ban akkor ezek csak None-al fognak szerepelni
- date,cam1,cam2,iso,w,l = None, None, None, None, None, None
- for key, value in photoData.items(): # itt kiszedjük az exifből az adatokat és feltöltődnek a változók
- if not key in ExifTags.TAGS:
- continue
- print(ExifTags.TAGS[key])
- if ExifTags.TAGS[key] == "DateTime":
- date = value
- #datum alapjan mappakba masolja a fotokat
- dateFolder = destinationFolder + (value[0:7]).replace(":","_")
- if not os.path.exists( dateFolder ):
- os.mkdir( dateFolder )
- shutil.copy2(folderPath + imagePath, dateFolder + "/" + imagePath)
- if ExifTags.TAGS[key] == "Make":
- cam1 = value
- if ExifTags.TAGS[key] == "Model":
- cam2 = value
- if ExifTags.TAGS[key] == "ISOSpeedRatings":
- iso = value
- if ExifTags.TAGS[key] == "ImageWidth":
- w = value
- if ExifTags.TAGS[key] == "ImageLength":
- l = value
- # a probléma az volt hogy ez a sor a key,value loop belsejében futott le ahol nem minden esetben kaptál date értéket
- # mivel a 19. sorban én létrehoztam minden változót None-al így akkor is kimegy a text file ha valamelyik adat hiányzik.
- # nézd végig a kódot debbug módban és próbáld értelmezni miért :)
- data_of_photo = "Date: {}\nCamera: {} {}\nISO: {} \nDimension: {} x {}\n".format(date,cam1,cam2,iso,w,l)
- finalText += "Filename: {}\n--------------------\n{}--------------------\n".format(imagePath, data_of_photo)
- else:
- print("no result")
- with open(folderPath + "exif_data.txt","w") as f:
- f.write(finalText)
- with open(folderPath + "exif_data.json","w") as f:
- json.dump(finalText,f)
- print (finalText)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement