From 1913445b95063e78f80bf300394d167ba8004144 Mon Sep 17 00:00:00 2001 From: linghaihui <75124771@qq.com> Date: Wed, 29 Mar 2023 15:24:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81n=E4=B8=AA=E8=B4=A6=E5=8F=B7?= =?UTF-8?q?=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- new-bing/README.md | 7 +++---- new-bing/app.py | 31 +++++++++++++++++++++---------- new-bing/env.example | 1 + 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/new-bing/README.md b/new-bing/README.md index 6027b20..3f2613d 100644 --- a/new-bing/README.md +++ b/new-bing/README.md @@ -1,6 +1,6 @@ ## New Bing 接口 -包括http和websocket两种协议的接口,可根据实际情况选用 +包括 http 和 websocket 两种协议的接口,可根据实际情况选用 ## 部署 @@ -9,7 +9,7 @@ ``` 1.git clone https://github.com/bujnlc8/gptbing 2.cd gptbing/new-bing -3.mkdir cookies && mv cookie.json cookies # 支持3个cookie,可分别命名为cookie.json,cookie1.json,cookie2.json +3.mkdir cookies && mv cookie.json cookies # 通过COOKIE_FILES环境变量可以支持n个账号的自动切换,目前微软对每个账号每天的聊天限制是200条 4.cp env.example env # 根据实际情况修改 5.bash start.sh 0.0.3 6.curl -X POST 'http://127.0.0.1:8000/chat' -H 'content-type: application/json' --data '{"q":"你是谁?","t":1,"sid":"1"}' # 验证是否成功 @@ -19,5 +19,4 @@ `EdgeGPT.py`文件 fork 至[https://github.com/acheong08/EdgeGPT](https://github.com/acheong08/EdgeGPT),并做了些许修改,在此表示感谢! - -**⚠️ 目前中国大陆的IP会返回404,自备代理** 见[https://github.com/acheong08/EdgeGPT/issues/178](https://github.com/acheong08/EdgeGPT/issues/178) +**⚠️ 目前中国大陆的 IP 会返回 404,自备代理** 见[https://github.com/acheong08/EdgeGPT/issues/178](https://github.com/acheong08/EdgeGPT/issues/178) diff --git a/new-bing/app.py b/new-bing/app.py index 893003e..efe38db 100644 --- a/new-bing/app.py +++ b/new-bing/app.py @@ -16,10 +16,18 @@ from EdgeGPT import Chatbot, ConversationStyle APPID = os.environ.get('WXAPPID') APPSECRET = os.environ.get('WXAPPSECRET') WX_URL = 'https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code' -COOKIE = os.environ.get('COOKIE_FILE', '') -# 备用cookie -BAK_COOKIE = os.environ.get('COOKIE_FILE1', '') -BAK_COOKIE1 = os.environ.get('COOKIE_FILE2', '') + +# cookie列表, 如果有此环境变量,优先使用 +COOKIE_FILES = raw_json.loads(os.environ.get('COOKIE_FILES', '[]')) +if COOKIE_FILES: + os.environ['COOKIE_FILE'] = COOKIE_FILES[0] +else: + COOKIE = os.environ.get('COOKIE_FILE', '') + if not COOKIE: + raise ValueError('COOKIE_FILE环境变量为空') + BAK_COOKIE = os.environ.get('COOKIE_FILE1', COOKIE) + BAK_COOKIE1 = os.environ.get('COOKIE_FILE2', COOKIE) + BAK_COOKIE2 = os.environ.get('COOKIE_FILE3', COOKIE) LOCK = threading.Lock() BOT_LOCK = threading.Lock() @@ -36,14 +44,17 @@ def reset_cookie(): if not LOCK.acquire(blocking=False): return cookie = os.environ.get('COOKIE_FILE') - if cookie == COOKIE: - if BAK_COOKIE: + if COOKIE_FILES: + os.environ['COOKIE_FILE'] = COOKIE_FILES[(COOKIE_FILES.index(cookie) + 1) % len(COOKIE_FILES)] + else: + if cookie == COOKIE: os.environ['COOKIE_FILE'] = BAK_COOKIE - elif cookie == BAK_COOKIE: - if BAK_COOKIE1: + elif cookie == BAK_COOKIE: os.environ['COOKIE_FILE'] = BAK_COOKIE1 - elif cookie == BAK_COOKIE1: - os.environ['COOKIE_FILE'] = COOKIE + elif cookie == BAK_COOKIE1: + os.environ['COOKIE_FILE'] = BAK_COOKIE2 + elif cookie == BAK_COOKIE2: + os.environ['COOKIE_FILE'] = COOKIE LOCK.release() diff --git a/new-bing/env.example b/new-bing/env.example index fadac6e..bc30727 100644 --- a/new-bing/env.example +++ b/new-bing/env.example @@ -3,4 +3,5 @@ WXAPPSECRET=用不到小程序可以不填 COOKIE_FILE=/sanic/cookies/cookie.json COOKIE_FILE1=/sanic/cookies/cookie1.json # 备用cookie1, 没有可以删掉 COOKIE_FILE2=/sanic/cookies/cookie2.json # 备用cookie2, 没有可以删掉 +COOKIE_FILES=["/sanic/cookies/cookie.json", "/sanic/cookies/cookie1.json", "/sanic/cookies/cookie2.json"] #cookie列表,配置了此环境变量,会优先使用此变量,直接忽略上面的3个环境变量 https_proxy=http://127.0.0.1:1080 # 目前中国大陆的IP会返回404,所以最好能加个代理