Advertisement
robertvari

Eszter Haszon-Hegedüs - PhotoLibrary_utility

Apr 19th, 2019
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.71 KB | None | 0 0
  1. import os, shutil, json
  2. from PIL import Image, ExifTags
  3.  
  4. # folderPath = input("Enter the folder name:")
  5. folderPath = "/home/robertvari/Documents/photos/"
  6. destinationFolder = folderPath + "DATE_"
  7. finalText = ""
  8. if os.path.exists(folderPath):
  9.     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
  10.  
  11.     for imagePath in files:
  12.         img = Image.open( folderPath + imagePath )
  13.         photoData = img._getexif()                                  #fotok adatai kimentve dictionary-be
  14.         if not photoData: continue
  15.  
  16.         # előbb létrehozzuk a szukséges változókat None-al
  17.         # ez a módszer azért jó mert simán lehet olyan fotó ahol nincs meg minden adat
  18.         # a text file-ban akkor ezek csak None-al fognak szerepelni
  19.         date,cam1,cam2,iso,w,l = None, None, None, None, None, None
  20.  
  21.         for key, value in photoData.items(): # itt kiszedjük az exifből az adatokat és feltöltődnek a változók
  22.             if not key in ExifTags.TAGS:
  23.                 continue
  24.             print(ExifTags.TAGS[key])
  25.  
  26.             if ExifTags.TAGS[key] == "DateTime":
  27.                 date = value
  28.  
  29.                 #datum alapjan mappakba masolja a fotokat
  30.                 dateFolder = destinationFolder + (value[0:7]).replace(":","_")
  31.                 if not os.path.exists( dateFolder ):
  32.                     os.mkdir( dateFolder )
  33.                 shutil.copy2(folderPath + imagePath, dateFolder + "/" + imagePath)
  34.  
  35.             if ExifTags.TAGS[key] == "Make":
  36.                 cam1 = value
  37.             if ExifTags.TAGS[key] == "Model":
  38.                 cam2 = value
  39.             if ExifTags.TAGS[key] == "ISOSpeedRatings":
  40.                 iso = value
  41.             if ExifTags.TAGS[key] == "ImageWidth":
  42.                 w = value
  43.             if ExifTags.TAGS[key] == "ImageLength":
  44.                 l = value
  45.  
  46.         # 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
  47.         # 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.
  48.         # nézd végig a kódot debbug módban és próbáld értelmezni miért :)
  49.         data_of_photo = "Date: {}\nCamera: {} {}\nISO: {} \nDimension: {} x {}\n".format(date,cam1,cam2,iso,w,l)
  50.  
  51.         finalText += "Filename: {}\n--------------------\n{}--------------------\n".format(imagePath, data_of_photo)
  52. else:
  53.     print("no result")
  54.  
  55. with open(folderPath + "exif_data.txt","w") as f:
  56.     f.write(finalText)
  57.  
  58. with open(folderPath + "exif_data.json","w") as f:
  59.     json.dump(finalText,f)
  60.  
  61. print (finalText)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement