1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- """
- .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["成功"]
|