#!/usr/bin/env python

import requests
from PIL import Image
import sys
import os

img_url = 'https://blog.finxter.com/wp-content/uploads/2022/04/greenland_02a.jpg'

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("No file given as argument")
        exit(1)

    input_file = sys.argv[1]
    img = Image.new("RGBA", (0,0)) # create empty image to override
    if os.path.isfile(input_file):
        img = Image.open(input_file)
    if not os.path.isfile(input_file):
        img_url = f'https://raw.githubusercontent.com/msikma/pokesprite/master/pokemon-gen7x/regular/{input_file}'
        img = Image.open(requests.get(img_url, stream = True).raw)
    
    output = ""
    last_color = ""

    bb = [0, 0, img.size[0] - 1, img.size[1] - 1]
    while bb[0] < img.size[0] - 1: 
        if any([img.getpixel((bb[0], y))[3] != 0 for y in range(img.size[1])]):
            break
        else:
            bb[0] += 1

    while bb[1] < img.size[1] - 1:
        if any([img.getpixel((x, bb[1]))[3] != 0 for x in range(img.size[0])]):
            break
        else:
            bb[1] += 1

    while bb[2] > bb[0]:
        if any([img.getpixel((bb[2], y))[3] != 0 for y in range(img.size[1])]):
            break
        else:
            bb[2] -= 1

    while bb[3] > bb[1]:
        if any([img.getpixel((x, bb[3]))[3] != 0 for x in range(img.size[0])]):
            break
        else:
            bb[3] -= 1

    # output += "\n\n"
    for y in range(bb[1], bb[3] + 1):
        # output += "    "
        for x in range(bb[0], bb[2] + 1):
            [r, g, b, a] = img.getpixel((x, y))
            if a > 0:
                curr_color = f'48;2;{r};{g};{b}'
            else:
                curr_color = "0"

            if curr_color != last_color:
                output += f'\033[{curr_color}m'
                last_color = curr_color

            output += "  "
        if last_color != "0":
            output += "\033[0m"
            last_color = "0"

        if y < bb[3]:
            output += "\n"
    
    # output += "\n"
    print(output)
