def dynamicExportFiles(self, _files, _img): # 解析文件并输出(添加_dynamic.json) ''' 解析_manifest.json文件 ''' count = _files.count() file_list = [_files.item(i).text() for i in range(count)] # 动态加载的全景图名字列表{文件名:[图片名列表]} for root_name in file_list: manifest_data = self.status.dynamic_binary[root_name]["_manifest.json"] # 取出来为二进制数据,需进行转换,bytes --> str --> list manifest_data = json.loads(bytes.decode(manifest_data)) img_list = [] # 图片名列表 for manifest in manifest_data: img_name = manifest['theme']['skybox'] extension = img_name.rsplit('.', 1)[1] # 扩展名 if extension in _img: img_list.append(img_name) # 将_dynamic.json数据加入self.status.dynamic_binary[文件名]中 self.status.dynamic_binary[root_name]['_dynamic.json'] = bytes(json.dumps(img_list), encoding='utf-8') # 读取文件名root_name重新打包文件 out_path = os.path.join(os.path.expanduser('~'), 'Desktop', 'dynamic_' + root_name) writer = PyArchive.FileWriter() writer.Open(out_path, True) # 取出root_name对应的数据写入文件 for file_name in self.status.dynamic_binary[root_name].keys(): writer.Write(file_name, self.status.dynamic_binary[root_name][file_name]) writer.Close()
def saveImport(self, _inFile): self.clean() reader = PyArchive.FileReader() reader.Open(_inFile) # TODO 解析文件 reader.Close() self.Broadcast('/maker/Karaoke/update', None)
def saveImport(self, _inFile): self.clean() reader = PyArchive.FileReader() reader.Open(_inFile) for filename in reader.ListEntries(): self.status.binary[filename] = reader.Read(filename) reader.Close() self.Broadcast('/maker/RingPhotography360/update', None)
def packExportFiles(self, _type): out_path = os.path.join(os.path.expanduser('~'), 'Desktop', 'out_' + self.status.save_name + _type) writer = PyArchive.FileWriter() writer.Open(out_path, True) # 写入文件 for file_name in self.status.pack_binary.keys(): writer.Write(file_name, self.status.pack_binary[file_name]) writer.Close()
def unpackAddFiles(self, _inFile): self.status.clean_sign = 'unpack' self.clean() self.status.save_name = QFileInfo(_inFile).fileName().rsplit('.', 1)[0] reader = PyArchive.FileReader() reader.Open(_inFile) for filename in reader.ListEntries(): self.status.unpack_binary[filename] = reader.Read(filename) reader.Close() self.Broadcast('/setting/tools/unpack/update', None)
def saveExport(self, _outFile): writer = PyArchive.FileWriter() writer.Open(_outFile, True) # 写入所有文件 writer.Write("audio#1.ogg", self.status.music) writer.Write("audio#2.ogg", self.status.accompaniment) writer.Write("app.asset", Util.fileToBytes('./template/Karaoke/app.asset')) writer.Write("app.lua", Util.fileToBytes('./template/Karaoke/app.lua')) writer.Write("config.lua", self.renderConfig()) writer.Write("preloads.json", Util.stringToBytes(json.dumps(self.status.preloads))) writer.Close()
def dynamicAddFiles(self, _inFiles): self.status.clean_sign = 'dynamic' self.clean() # 添加文件,存入路径和对应数据 for file_path in _inFiles: key_name = QFileInfo(file_path).fileName() # 读取该文件里面的文件数据 reader = PyArchive.FileReader() reader.Open(file_path) self.status.dynamic_binary[key_name] = {} for filename in reader.ListEntries(): # {根文件名 : {资源文件名 : 资源数据}} self.status.dynamic_binary[key_name][filename] = reader.Read(filename) reader.Close() self.Broadcast('/setting/tools/dynamic/update', None)
def saveExport(self, _outFile): self.status.preloads[0]['count'] = len(self.status.photos) writer = PyArchive.FileWriter() writer.Open(_outFile, True) # 写入文件 idx = 0 for filename in self.status.binary.keys(): idx += 1 writer.Write('img#{0}.jpg'.format(idx), self.status.binary[filename]) writer.Write("app.asset", Util.fileToBytes('./template/PhotoAlbum/app.asset')) writer.Write("app.lua", Util.fileToBytes('./template/PhotoAlbum/app.lua')) writer.Write("config.lua", self.renderConfig()) writer.Write("preloads.json", Util.stringToBytes(json.dumps(self.status.preloads))) writer.Close()
def saveExport(self, _outFile): writer = PyArchive.FileWriter() writer.Open(_outFile, True) # 判断是否有朗诵音频 if 0 != len(self.status.audio): writer.Write("audio#1.ogg", self.status.audio) writer.Write("preloads.json", Util.stringToBytes(json.dumps(self.status.preloads))) else: writer.Write("preloads.json", Util.stringToBytes(json.dumps([]))) # 写入所有文件 writer.Write("app.asset", Util.fileToBytes('./template/Reciting/app.asset')) writer.Write("app.lua", Util.fileToBytes('./template/Reciting/app.lua')) writer.Write("config.lua", self.renderConfig()) writer.Close()