diff --git a/exif.py b/exif.py deleted file mode 100644 index e4785a2..0000000 --- a/exif.py +++ /dev/null @@ -1,81 +0,0 @@ -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 - - - \ No newline at end of file diff --git a/getpub.py b/getpub.py deleted file mode 100644 index 5d13a19..0000000 --- a/getpub.py +++ /dev/null @@ -1,7 +0,0 @@ -def getPub(input): - if fa_category in input or input.category == 'furaffinity': - return 'Furaffinity' - elif input.category == 'deviantart': - return 'DeviantArt' - else: - return 'Unknown' \ No newline at end of file diff --git a/iptc.py b/iptc.py deleted file mode 100644 index e69de29..0000000 diff --git a/main.py b/main.py deleted file mode 100644 index 60b87bf..0000000 --- a/main.py +++ /dev/null @@ -1,22 +0,0 @@ -# module imports -import sys -import json -import logging - -# init logging -logging.basicConfig(stream=sys.stderr, level=logging.DEBUG) - -# variable init -infojson={} -source=sys.argv[1] - -logging.info(f"loading info.json for {source}...") -with open(f"{source}.json") as file: - infojson=json.load(file) - -# TODO: insert method to check url or dict -logging.debug("determining file type...") -from standards import exif -if infojson.extension in exif.allowed_exts: - logging.debug(f"exif module supports {infojson.extesnion} files. using it... ") - \ No newline at end of file diff --git a/matroska.py b/matroska.py deleted file mode 100644 index e69de29..0000000 diff --git a/png.py b/png.py deleted file mode 100644 index e69de29..0000000 diff --git a/xmp.py b/xmp.py deleted file mode 100644 index ba9cb18..0000000 --- a/xmp.py +++ /dev/null @@ -1,123 +0,0 @@ -"XMP Manipulator for gallery-dl" -import logging -logging.basicConfig(stream=sys.stderr, level=logging.DEBUG) - -allowed_exts=[ - "html", "htm", "xhtml", "xht", # HTML - "tif", "tiff", # TIFF - "jpeg", "jpg", "pjpeg", "pjpg", "jpe", # JPEG - "jp2", "jpf", "jpx", "jpm", "mj2", # JPEG 2000 - "png", "apng", # PNG - "gif", # GIF - "mp3", # MPEG-1 / MPEG-2 Layer III - "mp4", "m4a", "m4p", "m4b", "m4r", "m4v", # MPEG-4 - "mov", "qt", # Apple QuickTime .mov - "pdf", # PDF - "webp" # WebP -] - -# def backupMetadata(file: str, outputFileExt: str = "xmp_backup.json.xz") -> bool: -# """Exports XMP metadata inside of a file. - -# Parameters -# ---------- -# file : str -# Location of the file relative to the working directory. -# outputFileExt : str, optional -# The suffix used for the backup file. By default, the output file will be formatted as such: -# .xmp_backup.json.xz - -# Returns -# ------- -# bool -# True, if operation was successful. -# False, if operation failed. -# """ -# from libxmp.utils import file_to_dict - -# import json -# with open(f"{file}.xmp_backup.json.xz",'w+b') as bfile -# logging.debug(f"writing to {bfile}") -# import lzma -# bfile.write(lzma.compress( -# bytes(json.dumps(file_to_dict(file),sort_keys=True)), -# format=FORMAT_XZ, -# check=CHECK_SHA256, -# preset=9 -# )) -# logging.debug("wrote backup data") - -# logging.info("backup done!") - -def backupMetadata(file): - import pyexiv2 - data = pyexiv2.ImageMetadata(file) - data.read() - - full = [] - - for key in data.xmp_keys: - full.append([ - key, - data[key].raw_value - ]) - - with open(f"{file}.xmp_backup.json.xz",'w+b') as bfile - import lzma, json - bfile.write(lzma.compress( - bytes(json.dumps(full)), - format=FORMAT_XZ, - check=CHECK_SHA256, - preset=9 - )) - -# def writeTags(file: str, tags: dict) -> bool: -# """Writes XMP tags to file taking the info.json file as a dict. - - -# """ -# from libxmp import XMPFiles, consts -# xmpfile = XMPFiles(file_path=file,) -# if artist in tags: -# if type(tags.artist) == str: -# xmp.set_property(consts.XMP_NS_DC, u'creator', tags.artist.decode('unicode-escape')) - -def writeTags(file, tags): - import pyexiv2 - xmptags = pyexiv2.ImageMetadata(file) - xmptags.read() - - if artist in tags: - if type(tag.artist) == str: - xmptags['Xmp.dc.creator'] = tags.artist - elif tags.category == "deviantart": - xmptags['Xmp.dc.creator'] = tags.artist.username - - if title in tags: - xmptags['Xmp.dc.title'] = tags.title - - if description in tags: - xmptags['Xmp.dc.description'] = tags.description - - if date in tags: - xmptags['Xmp.dc.date'] = tags.date - - from getpub import getPub - xmptags['Xmp.dc.publisher'] = getPub(tags) - del getPub - - keywords=[] - - if tags in tags: for item in tags.tags: if item not in keywords: keywords.append(item) - - if theme in tags and tags.theme not in keywords: - keywords.append(tags.theme) - - if rating in tags and tags.rating not in keywords: - keywords.append(tags.rating) - - if species in tags and tags.species not in keywords: - keywords.append(tags.species) - - if gender in tags and tags.gender not in keywords: - keywords \ No newline at end of file