1 # -*- coding: utf-8 -*- 2 import xxtea 3 import os 4 5 src = "./assets/src" 6 dst = "./assets/srcd" 7 8 xxtea_sign = "" 9 xxtea_key = "fc9853c5-78f9-55" 10 xxtea_sign_len = len(xxtea_sign) 11 xxtea_key_len = len(xxtea_key) 12 13 files = [] 14 exts = [".luac",".jsc"] 15 16 def deep_iterate_dir(rootDir): 17 for lists in os.listdir(rootDir): 18 path = os.path.join(rootDir, lists) 19 if os.path.isdir(path): 20 deep_iterate_dir(path) 21 elif os.path.isfile(path): 22 ext = os.path.splitext(path)[1] 23 if ext in exts: 24 files.append(path) 25 26 27 # 处理一个文件 28 def handle_file(file): 29 with open(file,"rb") as fd: 30 con = fd.read() 31 c2 = xxtea.decrypt(con, xxtea_key,padding=False) 32 fd.close() 33 return c2 34 35 # 保存文件 36 def save_file(file,outData): 37 dst_rootpath = os.path.split(file)[0] 38 try: 39 # print "creating dir (%s)" % (dst_rootpath) 40 os.makedirs(dst_rootpath) 41 except OSError: 42 if os.path.exists(dst_rootpath) == False: 43 # There was an error on creation, so make sure we know about it 44 raise Exception("Error: create directory %s failed." % dst_rootpath) 45 46 if file.endswith("c"): 47 file = file[:-1] 48 with open(file,"wb") as fd: 49 con = fd.write(outData) 50 fd.close() 51 52 # 获取绝对路径 53 def normalize_path(i): 54 tmp = os.path.normpath(i) 55 if not os.path.isabs(tmp): 56 tmp = os.path.abspath(tmp) 57 return tmp 58 59 # 获取相对路径 60 def get_relative_path(luafile): 61 try: 62 pos = luafile.index(src) 63 return luafile[len(src)+1:] 64 except ValueError: 65 raise Exception("get_relative_path error") 66 67 def handle_all_files(): 68 for file in files: 69 con = handle_file(file) 70 if con: 71 path = os.path.join(dst,get_relative_path(file)) 72 save_file(path,con) 73 else: 74 print ("handle %s file error" % file) 75 76 def main(): 77 global src 78 global dst 79 src = normalize_path(src) 80 dst = normalize_path(dst) 81 82 if not os.path.exists(dst): 83 os.makedirs(dst) 84 85 deep_iterate_dir(src) 86 handle_all_files() 87 88 if __name__ == "__main__": 89 main()