#!/usr/bin/env python

"""gulp2_20bn_json_videos

Gulp an image dataset depicted by a list of files in the following format;

images_list.txt
image/path1.jpg, label1
image/path2.jog, label2
...

Usage:
    gulp2_image_list [--images_per_chunk <images_per_chunk>]
                    [--num_workers <num_workers>]
                    [--image_size <image_size>]
                    [--root_path <root_path>]
                    [--shuffle]
                    <image_list_file> <output_directory>
    gulp2_image_list (-h | --help)
    gulp2_image_list --version

Arguments:
    image_list_file:                        Base directory for video files
    output_directory:                       Output directory for GulpIO files

Options:
    -h --help                               Show this screen.
    --version                               Show version.
    --images_per_chunk=<images_per_chunk>   Number of images in one chunk [default: 100]
    --num_workers=<num_workers>             Number of parallel processes [default: 4]
    --image_size=<image_size>               Size of smaller edge of resized frames [default: -1]
    --root_path=<root_path>                 Root image folder [default: 100]
    --shuffle                               Shuffle the dataset before ingestion
"""

from docopt import docopt

from gulpio2.adapters import ImageListAdapter
from gulpio2.fileio import GulpIngestor

if __name__ == '__main__':
    arguments = docopt(__doc__)
    print(arguments)

    image_list_file = arguments['<image_list_file>']
    output_folder = arguments['<output_directory>']
    images_per_chunk = int(arguments['--images_per_chunk'])
    num_workers = int(arguments['--num_workers'])
    img_size = int(arguments['--image_size'])
    root_path = arguments['--root_path']
    shuffle = arguments['--shuffle']

    adapter = ImageListAdapter(image_list_file, output_folder,
                               root_folder=root_path,
                               shuffle=shuffle,
                               img_size=img_size
                               )

    ingestor = GulpIngestor(adapter,
                            output_folder,
                            images_per_chunk,
                            num_workers)
    ingestor()
