#!/usr/bin/python3

import os
import argparse
import json
from selenium import webdriver
from gmapsbounds import obj
from gmapsbounds import utils

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("input_file", help="file name containing geographic locations")
    parser.add_argument('-o', "--output_dir", help="directory for program output", default=os.getcwd())
    args = parser.parse_args()
    output_dir = args.output_dir
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)
    with open(args.input_file) as f:
        location_list = f.readlines()
    if location_list:
        driver = utils.launch_driver()
        try:
            for city_name in location_list:
                city = obj.City(driver, city_name)
                city.download_center_map()
                city.center, city.zoom = utils.parse_url(city.driver.current_url)
                city.set_corner_information()
                city.calculate_coordinates()
                with open(os.path.join(output_dir, '{}.json'.format(city_name)), 'w') as f:
                    f.write(json.dumps(city.as_dict(), indent=4))
        finally:
            driver.close()

if __name__ == '__main__':
    main()