def create_csv_file(url, output_filename, hist_folder, main_logger):
    path = sys.path[0]
    package_file = os.path.join(path, PACKAGE_NAME)
    
    if os.path.isfile(package_file):
        os.remove(package_file)
    
    ext_hist_dn_count_obj = DnCountObj()
    set_dn_count_info(ext_hist_dn_count_obj, hist_folder)

    # get lats month string
    des_month_digit = ''.join(str(datetime.date.today() - datetime.timedelta(days=1)).split('-'))[:-2]

    main_logger.info(str(des_month_digit) + " Download Count Report execution started ...")
    try:
        urllib.request.urlretrieve(url, package_file) 
        
        if os.path.isfile(package_file):
            unzip_file(package_file, path)
            ext_name_list = get_ext_name_list(INDEX_FILE)
            cur_dn_info = list()

            for ext in ext_name_list:
                count = get_release_tot_dn_count(RELEASE_INFO_URL.format('ibmpredictiveanalytics', ext), ext)
                        
                cur_count = count - ext_hist_dn_count_obj.get_tot_dn_count(ext)
                cur_dn_info.append((ext, str(cur_count)))
                ext_hist_dn_count_obj.add_dn_count(ext, cur_count, des_month_digit)
            
            main_logger.info("start output general " + output_filename)
            ext_hist_dn_count_obj.output_csv_file(output_filename)

            main_logger.info("start output history " + output_filename)
            create_hist_csv_file(os.path.basename(output_filename).split('.')[0] + str(des_month_digit) + '.csv',
                                 hist_folder, cur_dn_info)

            if os.path.isfile(INDEX_FILE):
                os.remove(INDEX_FILE)
            if os.path.isfile(package_file):
                os.remove(package_file)
    except Exception as e:
        raise e
def create_r_essentials_dn_count_file(output_filename, hist_folder, r_essential_list, main_logger):
    ext_hist_dn_count_obj = DnCountObj()
    set_dn_count_info(ext_hist_dn_count_obj, hist_folder)

    # get lats month string
    des_month_digit = ''.join(str(datetime.date.today() - datetime.timedelta(days=1)).split('-'))[:-2]
    main_logger.info(str(des_month_digit) + " R essential Download Count Report execution started ...")

    cur_dn_info = list()
    for item in r_essential_list.keys():
        count = get_release_tot_dn_count(RELEASE_INFO_URL.format('ibmpredictiveanalytics', item), r_essential_list[item])
        cur_count = count - ext_hist_dn_count_obj.get_tot_dn_count(item)
        cur_dn_info.append((item, str(cur_count)))
        ext_hist_dn_count_obj.add_dn_count(item, cur_count, des_month_digit)

    main_logger.info("start output general " + output_filename)
    ext_hist_dn_count_obj.output_csv_file(output_filename)

    main_logger.info("start output history " + output_filename)
    create_hist_csv_file(os.path.basename(output_filename).split('.')[0] + str(des_month_digit) + '.csv',
                         hist_folder, cur_dn_info)