mirror of
https://github.com/9001/copyparty.git
synced 2025-08-16 08:32:13 -06:00
73 lines
1.7 KiB
Python
Executable file
73 lines
1.7 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
|
|
import os
|
|
import sys
|
|
import subprocess as sp
|
|
|
|
|
|
_ = r"""
|
|
remove exif tags from uploaded images; the eventhook edition of
|
|
https://github.com/9001/copyparty/blob/hovudstraum/bin/mtag/image-noexif.py
|
|
|
|
dependencies:
|
|
exiftool / perl-Image-ExifTool
|
|
|
|
being an upload hook, this will take effect after upload completion
|
|
but before copyparty has hashed/indexed the file, which means that
|
|
copyparty will never index the original file, so deduplication will
|
|
not work as expected... which is mostly OK but ehhh
|
|
|
|
note: modifies the file in-place, so don't set the `f` (fork) flag
|
|
|
|
example usages; either as global config (all volumes) or as volflag:
|
|
--xau bin/hooks/image-noexif.py
|
|
-v srv/inc:inc:r:rw,ed:c,xau=bin/hooks/image-noexif.py
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
explained:
|
|
share fs-path srv/inc at /inc (readable by all, read-write for user ed)
|
|
running this xau (execute-after-upload) plugin for all uploaded files
|
|
"""
|
|
|
|
|
|
# filetypes to process; ignores everything else
|
|
EXTS = ("jpg", "jpeg", "avif", "heif", "heic")
|
|
|
|
|
|
try:
|
|
from copyparty.util import fsenc
|
|
except:
|
|
|
|
def fsenc(p):
|
|
return p.encode("utf-8")
|
|
|
|
|
|
def main():
|
|
fp = sys.argv[1]
|
|
ext = fp.lower().split(".")[-1]
|
|
if ext not in EXTS:
|
|
return
|
|
|
|
cwd, fn = os.path.split(fp)
|
|
os.chdir(cwd)
|
|
f1 = fsenc(fn)
|
|
cmd = [
|
|
b"exiftool",
|
|
b"-exif:all=",
|
|
b"-iptc:all=",
|
|
b"-xmp:all=",
|
|
b"-P",
|
|
b"-overwrite_original",
|
|
b"--",
|
|
f1,
|
|
]
|
|
sp.check_output(cmd)
|
|
print("image-noexif: stripped")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
try:
|
|
main()
|
|
except:
|
|
pass
|