import sys
import os
from PIL import Image
from pathlib import Path
from svgtrace import trace
import requests
from io import BytesIO

## Param
image_url = sys.argv[1]
total_color = str(sys.argv[2])
output_path = os.path.realpath(sys.argv[3])
raw_filename = sys.argv[4]

## Validate output path to prevent path traversal attacks
output_base = os.path.realpath(output_path)
candidate = os.path.realpath(os.path.join(output_base, raw_filename))
if not candidate.startswith(output_base + os.sep) and candidate != output_base:
    print("Error: path traversal detected in output filename", file=sys.stderr)
    sys.exit(1)

# Use only the basename to prevent directory traversal via the filename argument
output_filename = os.path.basename(raw_filename)

## variable  declare
original_image = image_url
response = requests.get(original_image)
img = Image.open(BytesIO(response.content))

if(total_color != "black_white"):
    ##CONVERT COLOR
    imagepng=img.convert("P", palette=Image.ADAPTIVE, colors=int(total_color))
    imagepng.save(f'media/productdesigner/imagecolor/{output_filename}.png', optimize=True)

if(total_color == "black_white"):
    ##CONVERT BLACK AND WHITE
    imagepng = img.convert("1") ## L for gray scale  ## 1 for black and white
    imagepng.save(os.path.join(output_path, f'{output_filename}.png'), optimize=True)

##CONVERT PNG TO SVG
THISDIR = str(Path(__file__).resolve().parent)
DIR = str(Path(THISDIR).parents[0])
logoFile = os.path.join(output_path, output_filename)
logoFileSVG = Path(f"{logoFile}.svg").write_text(trace(f"{logoFile}.png"), encoding="utf-8")