diff --git a/main.py b/main.py index cd4c98c..a74876f 100644 --- a/main.py +++ b/main.py @@ -1,20 +1,47 @@ 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=True, help='Input filename') -parser.add_argument("-o", "--output_filename", required=True, help='Output filename') +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__': - 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) \ No newline at end of file + 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: + watermark_text_bottom_right( + input_image_path=file, + output_image_path=_build_output_filename(file), + text=args.text, + font_path=args.font, + pos=(1000, 200), + size=60) diff --git a/run-2.sh b/run-2.sh new file mode 100755 index 0000000..5230492 --- /dev/null +++ b/run-2.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +poetry run python main.py -t 'Кострома +фото: Вячеслав Бойко, bvn13.me' -if 'samples' -m *.jpg -f fonts/Roboto-Regular.ttf + diff --git a/run-nesting.sh b/run-nesting.sh deleted file mode 100644 index 9664ee5..0000000 --- a/run-nesting.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -FOLDER=$1 -MASK=$2 -TEXT=$3 - -FILES=$(find $1 -name "$2") -echo $FILES - -for fullpath in $FILES; do - filename="${fullpath##*/}" - dir="${fullpath:0:${#fullpath} - ${#filename}}" - base="${filename%.[^.]*}" - echo "$base" - if [[ $base != *_wm ]] - then - ext="${filename:${#base} + 1}" - output_file="$dir${base}_wm.$ext" - echo -e "$fullpath:\n\tdir = \"$dir\"\n\tbase = \"$base\"\n\text = \"$ext\"\n\toutput = $output_file" - poetry run python main.py -t "$TEXT" -i $fullpath -o $output_file -f fonts/Roboto-Regular.ttf - fi -done \ No newline at end of file diff --git a/samples/output_wm.jpg b/samples/output_wm.jpg new file mode 100644 index 0000000..8470e9d Binary files /dev/null and b/samples/output_wm.jpg differ