first commit for cute snep u//w//u
This commit is contained in:
commit
8ed5644f81
9 changed files with 5204 additions and 0 deletions
81
exif.py
Normal file
81
exif.py
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
import logging
|
||||
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)
|
||||
|
||||
allowed_exts=[
|
||||
"tif","tiff", # TIFF
|
||||
"jpeg","jpg","pjpeg","pjpg","jpe", # JPEG
|
||||
"webp", # Webp
|
||||
# "wav","wave", # RIFF Wave
|
||||
"png","apng" # PNG (since 1.2)
|
||||
]
|
||||
|
||||
def backupMetadata(file):
|
||||
from PIL import Image, ExifTags
|
||||
|
||||
logging.debug(f"loading file {file}")
|
||||
img = Image.open(file)
|
||||
logging.debug("file loaded. getting exif")
|
||||
img_exif = img.getexif()
|
||||
|
||||
full=[]
|
||||
|
||||
if img_exif is None:
|
||||
logging.warning("Could not load EXIF Data... Either something happened with Pillow, the file disappeared, or you don't have access to the file. Try running verbose!")
|
||||
break
|
||||
else:
|
||||
logging.debug("loaded tags")
|
||||
for key, val in img_exif.items():
|
||||
logging.debug(f"for key:'{key}', val:'{val}' in img_exif.items()")
|
||||
if key in ExifTags.TAGS:
|
||||
logging.debug(f"{key} is known exif tag! ({ExifTags.TAGS[key]})")
|
||||
full.append({
|
||||
'tagName': str(key),
|
||||
'realName': str(ExifTags.TAGS[key]),
|
||||
'value': str(val)
|
||||
})
|
||||
else:
|
||||
logging.warning(f"{key} is an unknown exif tag!")
|
||||
full.append({
|
||||
'tagName': str(key),
|
||||
'realName': None,
|
||||
'value': str(val)
|
||||
})
|
||||
|
||||
logging.info("writing backup data")
|
||||
import json
|
||||
|
||||
#import tempfile
|
||||
#temp = tempfile.TemporaryFile(mode='w+')
|
||||
#json.dump(full,temp,sort_keys=True)
|
||||
with open(f"{file}.exif_backup.json.xz",'w+b') as bfile
|
||||
logging.debug(f"writing to {bfile}")
|
||||
import lzma
|
||||
bfile.write(lzma.compress(
|
||||
bytes(json.dumps(full,sort_keys=True)),
|
||||
format=FORMAT_XZ,
|
||||
check=CHECK_SHA256,
|
||||
preset=9
|
||||
))
|
||||
logging.debug("wrote backup data")
|
||||
|
||||
logging.info("backup done!")
|
||||
|
||||
def writeTags(file,tags):
|
||||
from PIL import Image
|
||||
image=Image.open(file)
|
||||
exif = image.getexif()
|
||||
|
||||
if artist in tags:
|
||||
if type(tag.artist) == str:
|
||||
exif[0x013b] = tags.artist
|
||||
elif tags.category == "deviantart":
|
||||
exif[0x013b] = tags.artist.username
|
||||
|
||||
if title in tags:
|
||||
exif[0x0010e] = tags.title
|
||||
|
||||
if description in tags:
|
||||
exif[0x9286] = tags.description
|
||||
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue