From 986f422c7485387dc64f35b8f23d07762e7a7c64 Mon Sep 17 00:00:00 2001 From: m986883511 <986883511@qq.com> Date: Mon, 2 Aug 2021 19:43:36 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8D=E4=B8=AD=E6=96=87exe?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E6=89=93=E5=BC=80=E7=9A=84bug=202.=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=8F=AF=E9=85=8D=E7=BD=AE=E5=90=8E=E7=AB=AFip?= =?UTF-8?q?=E7=9A=84=E5=8A=9F=E8=83=BD->config.json=203.=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?ffmpeg=E6=B7=BB=E5=8A=A0PATH=E7=9A=84=E9=94=99=E8=AF=AF=204?= =?UTF-8?q?=E3=80=81=E5=A2=9E=E5=8A=A0=E6=89=93=E5=8C=85=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=B8=ADffmpeg=E7=9A=84dll?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- config.json | 4 ++++ image/2-run-exe.png | Bin 15763 -> 14329 bytes interface.py | 20 ++++++++++++++++---- main.py | 19 ++++++++++--------- 5 files changed, 31 insertions(+), 14 deletions(-) create mode 100644 config.json diff --git a/README.md b/README.md index d4df76b..d175ac3 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ docker run -d -p 6666:6666 m986883511/extract_subtitles 后端接口容器地址[Docker Hub](https://hub.docker.com/repository/docker/m986883511/extract_subtitles) -此过程可能时间较长,您需要预先安装好好docker,并配置好docker加速器 +此过程可能时间较长,您需要预先安装好好docker,并配置好docker加速器,你可能需要先docker login ```shell docker run -d -p 6666:6666 m986883511/extract_subtitles diff --git a/config.json b/config.json new file mode 100644 index 0000000..8cf93fc --- /dev/null +++ b/config.json @@ -0,0 +1,4 @@ +{ + "ip": "127.0.0.1", + "port": "6666" +} diff --git a/image/2-run-exe.png b/image/2-run-exe.png index e6d3762a82e03e864c72de5b10a0b48ad3375685..ba5ccffed1198b699dd981516ce866b31e27b586 100644 GIT binary patch literal 14329 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%0AYlbLY2 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 z rRBw9tUdN)QN6tuy7Nl|c3SD8@vs1&j9RoRR4fRz_PP9T;|NH*{y9!me diff --git a/interface.py b/interface.py index fc4d427..8694803 100644 --- a/interface.py +++ b/interface.py @@ -1,5 +1,5 @@ +import json import os - import requests from requests_toolbelt.multipart.encoder import MultipartEncoder @@ -10,11 +10,22 @@ class ExtractSubtitleApi: debug = True def __init__(self): - self.ip = ExtractSubtitleApi.ip - self.port = ExtractSubtitleApi.port + self.set_ip_port() self.headers = {'content-type': 'application/json'} self.print_flag = True + def set_ip_port(self): + try: + with open(os.path.join(os.path.dirname(__file__), 'config.json')) as f: + content = f.read() + content = json.loads(content) + self.ip = content['ip'] + self.port = content['port'] + except Exception as e: + print('read config.json failed, err={}'.format(e)) + self.ip = ExtractSubtitleApi.ip + self.port = ExtractSubtitleApi.port + @property def base_url(self): return "http://{}:{}".format(self.ip, self.port) @@ -22,7 +33,7 @@ def base_url(self): def text_recognition(self, base64_img): url = '{}/text_recognition'.format(self.base_url) data = {"image": [base64_img]} - res = requests.post(url, data=data) + res = requests.post(url, data=data) return self.deal_with_response(res) def extract_human_voice_from_sound(self, local_mp3_filepath): @@ -43,6 +54,7 @@ def get_human_voice_time_point(self, remote_wav_filename): return self.deal_with_response(res) def detect_recognition_model(self): + self.set_ip_port() url = '{}/load_model'.format(self.base_url) response = requests.get(url, headers=self.headers) return self.deal_with_response(response) diff --git a/main.py b/main.py index 5a2a33e..1593723 100644 --- a/main.py +++ b/main.py @@ -6,7 +6,7 @@ import base64 current_dir = os.path.dirname(__file__) -sys.path.append(os.path.join(current_dir, 'ffmpeg')) +os.environ['PATH'] += ';' + os.path.join(current_dir, 'ffmpeg') import cv2 import srt @@ -340,15 +340,16 @@ def __deal_with_process_output_string(self, input_str): def test_connect_api(self): self.add_log('开始测试api接口是否连通') - value = self.api_interface.detect_recognition_model() - if isinstance(value, dict) and value.get('result') == 'load model success': - msg = '文字识别API接口已连通:{}'.format(self.api_interface.base_url) - self.add_log(msg) + try: + value = self.api_interface.detect_recognition_model() + if isinstance(value, dict) and value.get('result') == 'load model success': + msg = '文字识别API接口已连通:{}'.format(self.api_interface.base_url) + self.add_log(msg) + self.connect_api_lineedit.setText(msg) + except Exception as e: + msg = '无法连接文字识别API接口,检查容器状态后重试' + self.add_log('{}, err={}'.format(msg, e)) self.connect_api_lineedit.setText(msg) - return - msg = '无法连接文字识别API接口' - self.add_log(msg) - self.connect_api_lineedit.setText(msg) def update_progress_bar(self, progress): self.extract_progress.setValue(progress)