def get_zipfile_filenamelist()

in src/loading_manifest/common_manifest.py [0:0]


def get_zipfile_filenamelist(input_path, zip_filename):
    namelist = []

    def add_inner_zipfile_filenamelist(parent_zip, child_zip_path, parent_zip_path, name_list):
        childzip_filename = parent_zip_path + child_zip_path
        childzip_filename_as_folder = childzip_filename[:childzip_filename.rfind(".")].strip() + "/"

        memory_zip = BytesIO()
        memory_zip.write(parent_zip.open(child_zip_path).read())
        memory_zipfile = ZipFile(memory_zip)
        childnames = memory_zipfile.namelist()
        for childname in childnames:
            if not memory_zipfile.getinfo(childname).is_dir():
                if childname.lower().endswith(".zip"):
                    add_inner_zipfile_filenamelist(memory_zipfile, childname, childzip_filename_as_folder, name_list)
                else:
                    namelist.append(childzip_filename_as_folder + childname)

    full_path = os.path.join(input_path, zip_filename)
    zip_filename_as_folder = zip_filename[:zip_filename.rfind(".")].strip()+"/"
    with ZipFile(full_path, 'r') as f_zip:
        names = f_zip.namelist()
        for name in names:
            if not f_zip.getinfo(name).is_dir():
                if name.lower().endswith(".zip"):
                    add_inner_zipfile_filenamelist(f_zip, name, zip_filename_as_folder, namelist)
                else:
                    namelist.append(zip_filename_as_folder + name)

    return namelist