import sys
sys.path.append(".")
import os
from argparse import ArgumentParser
from utils.file import list_image_files


parser = ArgumentParser()
parser.add_argument("--img_folder", type=str, required=True)
parser.add_argument("--val_size", type=int, required=True)
parser.add_argument("--save_folder", type=str, required=True)
parser.add_argument("--follow_links", action="store_true")
args = parser.parse_args()

files = list_image_files(
    args.img_folder, exts=(".jpg", ".png", ".jpeg"), follow_links=args.follow_links,
    log_progress=True, log_every_n_files=10000
)

print(f"find {len(files)} images in {args.img_folder}")
assert args.val_size < len(files)

val_files = files[:args.val_size]
train_files = files[args.val_size:]

os.makedirs(args.save_folder, exist_ok=True)

with open(os.path.join(args.save_folder, "train.list"), "a") as fp:
    for file_path in train_files:
        fp.write(f"{file_path}\n")

with open(os.path.join(args.save_folder, "val.list"), "w") as fp:
    for file_path in val_files:
        fp.write(f"{file_path}\n")
