first commit for cute snep u//w//u
This commit is contained in:
commit
8ed5644f81
9 changed files with 5204 additions and 0 deletions
123
xmp.py
Normal file
123
xmp.py
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
"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:
|
||||
# <source filename>.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
|
||||
Loading…
Add table
Add a link
Reference in a new issue