""" .swf文件的处理 """ import subprocess, os from file_processing.file_picture import ocr_patch from loguru import logger from docs.config import error_number def read_swf(file_path: str): swf_picture_paths, status = extract_swf(file_path) image_list = [] img_str = "" for position, img_path in swf_picture_paths: if os.path.exists(img_path): image_list.append((position, img_path)) print(f"image_list-->{image_list}") if image_list: ocr_text = ocr_patch(image_list) list_data = sorted(ocr_text.items(), key=lambda x: x[0], reverse=False) img_str = '\n'.join([v[1] for v in list_data]) return img_str, status def extract_swf(file_path): """ 解压到.swf文件夹中,返回文件路径列表(有序) :param file_path: :return: """ swf_picture_paths = [] swf_to_picture_dir = os.path.dirname(file_path) try: # 抽取swf,获取图片路径 output = subprocess.check_output('./extract.sh %s %s' % (file_path, swf_to_picture_dir), shell=True) output_string = output.decode() picture_num = output_string.split('\n') if len(picture_num) > 5: return str(output_string) else: if picture_num[0] != '': for i in picture_num[0].split(','): swf_to_picture_path = os.path.join(swf_to_picture_dir, '%s.jpg' % (i.strip())) swf_picture_paths.append(swf_to_picture_path) if picture_num[1] != '': for i in picture_num[1].split(','): swf_to_picture_path = os.path.join(swf_to_picture_dir, '%s.png' % (i.strip())) swf_picture_paths.append(swf_to_picture_path) except subprocess.CalledProcessError as e: logger.error('swf文件解析出错') logger.error(e) return [], error_number["解析错误"] # 对图片进行排序 try: swf_picture_dict = dict([(int(p.split("/")[-1].split(".")[0]), p) for p in swf_picture_paths]) print(f"swf_picture_dict-->{swf_picture_dict}") swf_picture_paths = sorted(swf_picture_dict.items(), key=lambda x: x[0]) except Exception as e: logger.warning(f"{e}") return swf_picture_paths, error_number["成功"]