51 lines
2.1 KiB
Python
51 lines
2.1 KiB
Python
import argparse
|
|
import os.path
|
|
import pathlib
|
|
from app.watermark import watermark_text_bottom_right
|
|
|
|
|
|
parser = argparse.ArgumentParser(__name__)
|
|
parser.add_argument("-f", "--font", required=True, help='TTF Font file')
|
|
parser.add_argument("-t", "--text", required=True, help='Text watermark')
|
|
parser.add_argument("-i", "--input_filename", required=False, help='Input filename')
|
|
parser.add_argument("-if", "--input_folder", required=False, help='Input folder')
|
|
parser.add_argument("-m", "--file_mask", required=False, help='File mask')
|
|
parser.add_argument("-o", "--output_filename", required=False, help='Output filename')
|
|
args = parser.parse_args()
|
|
|
|
|
|
def _find_all_files(folder: str, mask: str) -> list:
|
|
root = pathlib.Path(folder)
|
|
return [f"{os.path.join(file.parent, file.name)}" for file in root.rglob(mask) if '_wm' != os.path.splitext(file.name)[0][-3:]]
|
|
|
|
def _build_output_filename(filename: str) -> str:
|
|
file = pathlib.Path(filename)
|
|
basename, extension = os.path.splitext(file.name)
|
|
newfilename = f"{basename}_wm{extension}"
|
|
print(f"file={file}, basename={basename}, extension={extension}, newname={newfilename}")
|
|
return f"{os.path.join(file.parent, newfilename)}"
|
|
|
|
if __name__ == '__main__':
|
|
if args.input_filename is not None:
|
|
watermark_text_bottom_right(
|
|
input_image_path=args.input_filename,
|
|
output_image_path=args.output_filename,
|
|
text=args.text,
|
|
font_path=args.font,
|
|
pos=(1000, 200),
|
|
size=60)
|
|
elif args.input_folder is not None and args.file_mask is not None:
|
|
files = _find_all_files(args.input_folder, args.file_mask)
|
|
print(f"files={files}")
|
|
for file in files:
|
|
newfilename = _build_output_filename(file)
|
|
if os.path.isfile(newfilename):
|
|
continue
|
|
watermark_text_bottom_right(
|
|
input_image_path=file,
|
|
output_image_path=newfilename,
|
|
text=args.text,
|
|
font_path=args.font,
|
|
pos=(1000, 200),
|
|
size=60)
|