import sys
import os
from PIL import Image
import zipfile
from glob import glob
from matplotlib.pylab import plt


plt.ion()
fig = plt.figure()


import argparse

p = argparse.ArgumentParser()
p.add_argument('stem', type=str, help='The folder that contains tall of the buildings in subfolders.')
args = p.parse_args()

stem = args.stem.rstrip('/')
print(stem)

buildings = glob(f'{stem}/bldg-*')
images = []
processed = [os.path.dirname(f) for  f in images]

print(f"There seem to be {len(buildings)} buildings.")

def select_image(folder):
    files = glob(os.path.join(folder, '*.jpg'))
    files = sorted(files, key=lambda f: Image.open(f).width, reverse=True)
    print(f"This building has {len(files)} files")
    for i in range(10):
       for f in files:
           accept = ask_image(f)
           if accept == True:
               return f
           elif accept == None:
               return None
    return None

def ask_image(fn):
    im = plt.imread(fn)
    fig.clear()
    plt.imshow(im)
    plt.show()
    fig.canvas.draw()
    ok = input("Is this image acceptable? ")
    if ok.lower().startswith('y'):
        return True
    elif ok.lower().startswith('s'):
        return None
    else:
        return False

for f in buildings:
    if f in processed:
        continue
    im = select_image(f)
    processed.append(f)
    if im is not None:
        images.append(im)


z = zipfile.ZipFile(f'{stem}-one-per.zip', 'w')
for im in images:
    z.write(im)

print(" A zipfile has been created and should be available at this link:")
print(f" https://vision.csi.miamioh.edu/gp360/triage/{stem}-one-per.zip")

