Browse Source

feat: new itchat qrcode generator

master
lanvent 1 year ago
parent
commit
e71c600d10
4 changed files with 19 additions and 5 deletions
  1. +17
    -2
      channel/wechat/wechat_channel.py
  2. +1
    -1
      docker/build.latest.sh
  3. +1
    -0
      requirements.txt
  4. +0
    -2
      voice/azure/azure_voice.py

+ 17
- 2
channel/wechat/wechat_channel.py View File

@@ -64,6 +64,21 @@ def _check(func):
return func(self, cmsg) return func(self, cmsg)
return wrapper return wrapper


#可用的二维码生成接口
#https://api.qrserver.com/v1/create-qr-code/?size=400×400&data=https://www.abc.com
#https://api.isoyu.com/qr/?m=1&e=L&p=20&url=https://www.abc.com
def qrCallback(uuid,status,qrcode):
# logger.debug("qrCallback: {} {}".format(uuid,status))
if status == '0':
import qrcode
url = f"https://login.weixin.qq.com/l/{uuid}"
qr = qrcode.QRCode(border=1)
qr.add_data(url)
qr.make(fit=True)
qr.print_ascii(invert=True)

qr_api="https://api.isoyu.com/qr/?m=1&e=L&p=20&url={}".format(url)
print("You can also scan QRCode in website below:\n{}".format(qr_api))
@singleton @singleton
class WechatChannel(ChatChannel): class WechatChannel(ChatChannel):
def __init__(self): def __init__(self):
@@ -76,13 +91,13 @@ class WechatChannel(ChatChannel):
# login by scan QRCode # login by scan QRCode
hotReload = conf().get('hot_reload', False) hotReload = conf().get('hot_reload', False)
try: try:
itchat.auto_login(enableCmdQR=2, hotReload=hotReload)
itchat.auto_login(enableCmdQR=2, hotReload=hotReload, qrCallback=qrCallback)
except Exception as e: except Exception as e:
if hotReload: if hotReload:
logger.error("Hot reload failed, try to login without hot reload") logger.error("Hot reload failed, try to login without hot reload")
itchat.logout() itchat.logout()
os.remove("itchat.pkl") os.remove("itchat.pkl")
itchat.auto_login(enableCmdQR=2, hotReload=hotReload)
itchat.auto_login(enableCmdQR=2, hotReload=hotReload, qrCallback=qrCallback)
else: else:
raise e raise e
self.user_id = itchat.instance.storageClass.userName self.user_id = itchat.instance.storageClass.userName


+ 1
- 1
docker/build.latest.sh View File

@@ -1,4 +1,4 @@
#!/bin/bash #!/bin/bash


cd .. && docker build -f Dockerfile \
cd .. && docker build -f docker/Dockerfile.latest \
-t zhayujie/chatgpt-on-wechat . -t zhayujie/chatgpt-on-wechat .

+ 1
- 0
requirements.txt View File

@@ -7,6 +7,7 @@ PyQRCode>=1.2.1
pysilk>=0.0.1 pysilk>=0.0.1
pysilk_mod>=1.6.0 pysilk_mod>=1.6.0
pyttsx3>=2.90 pyttsx3>=2.90
qrcode>=7.4.2
requests>=2.28.2 requests>=2.28.2
webuiapi>=0.6.2 webuiapi>=0.6.2
wechaty>=0.10.7 wechaty>=0.10.7


+ 0
- 2
voice/azure/azure_voice.py View File

@@ -6,12 +6,10 @@ import json
import os import os
import time import time
import azure.cognitiveservices.speech as speechsdk import azure.cognitiveservices.speech as speechsdk
from aip import AipSpeech
from bridge.reply import Reply, ReplyType from bridge.reply import Reply, ReplyType
from common.log import logger from common.log import logger
from common.tmp_dir import TmpDir from common.tmp_dir import TmpDir
from voice.voice import Voice from voice.voice import Voice
from voice.audio_convert import get_pcm_from_wav
from config import conf from config import conf
""" """
Azure voice Azure voice


Loading…
Cancel
Save