import csv
import tarfile

def get_tarnames(in_file):
    with tarfile.open(in_file) as tar:
        tar_list = [name.split("/")[-1].split(".")[0] for name in tar.getnames()]
    return tar_list

def get_missing_json(in_file,in_file2,ref_file):
    missing_list = []
    for i in in_file:
        if i not in ref_file:
            missing_list.append(i)
    for i in in_file2:
        if i in missing_list:
            continue
        elif i not in ref_file:
            missing_list.append(i)
    list_of_lists = [[x] for x in missing_list]
    return list_of_lists

def get_missing_img(in_file,ref_file):
    missing_list = []
    for i in ref_file:
        if i not in in_file:
            missing_list.append(i)
    list_of_lists = [[x] for x in missing_list]
    return list_of_lists

def make_logfile(in_file, logtype):
   
    print (f"There are {len(in_file)} missing {logtype} files")
    
    if len(in_file) > 0:
        outfile = f"/software/glygen/logs/missing_img_{logtype}.csv"
        with open(outfile, "w") as out_file:
            writer = csv.writer(out_file, delimiter = ',', quoting=csv.QUOTE_ALL)
            writer.writerows(in_file)
        print (f"Log file saved to {outfile}")

def main():

    json_ac = "/data/projects/glygen/downloads/glytoucan/current/export/images-snfg-extended-json.tbz"
    png_ac = "/data/projects/glygen/downloads/glytoucan/current/export/images-snfg-extended-png.tbz"
    svg_ac = "/data/projects/glygen/downloads/glytoucan/current/export/images-snfg-extended-svg.tbz"

    json_list, png_list, svg_list = get_tarnames(json_ac), get_tarnames(png_ac), get_tarnames(svg_ac)

    missing_jsons, missing_pngs, missing_svgs = get_missing_json(png_list,svg_list,json_list), get_missing_img(png_list,json_list), get_missing_img(svg_list,json_list)

    make_logfile(missing_jsons, 'json')
    make_logfile(missing_pngs, 'png')
    make_logfile(missing_svgs, 'svg')

if __name__ == '__main__':
    main()