#!python

import sys
import os
import logging
import argparse
import requests
import requests_cache

from aiu import ArchiveItCollection

if __name__ == "__main__":

    logger = logging.getLogger(__name__) 
    loglevel = logging.INFO
    logging.basicConfig( 
        format='%(asctime)s [%(levelname)s] %(name)s: %(message)s',
        level=loglevel)

    parser = argparse.ArgumentParser(sys.argv)
    parser = argparse.ArgumentParser(description="Download all public metadata "
        "about an Archive-It Collection")

    requiredArguments = parser.add_argument_group("required arguments")

    parser.add_argument('-c', dest="collection",
        help="the number of the Archive-It collection for which to collect data",
        required=True
        )

    parser.add_argument('-o', dest="output",
        help="the output file in which to store the collection data",
        required=True
        )

    parser.add_argument('-cf', dest="cachefile",
        help="the SQLite file to use for caching",
        default="/tmp/fetch_ait_metadata_cache")
    
    args = parser.parse_args()

    logger.info("beginning execution...")

    requests_cache.install_cache(args.cachefile, backend='sqlite')
    session = requests.Session()

    aic = ArchiveItCollection( args.collection, session=session,
        logger=logger )

    logger.info("saving output to {}".format(args.output))
    aic.save_all_metadata_to_file(args.output)

    logger.info("output saved to {}".format(args.output))

    logger.info("finished execution for collection {}".format(
        args.collection))
