1. 程式人生 > >python微信聊天機器人,自動翻譯

python微信聊天機器人,自動翻譯

使用itchat,itchat是一個開源的微信個人號介面,使用python呼叫微信從未如此簡單。
聊天機器人呼叫的是圖靈機器人介面。
在http://www.tuling123.com/ 註冊賬號有自己的appkey
翻譯呼叫的是百度的翻譯介面。
在百度翻譯http://api.fanyi.baidu.com/api/trans/product/index 註冊賬號就可以有自己的appid 和secretKey

實現功能:
1,訊息前有#為翻譯,可中英互譯
2,聊天對話

以下程式碼在2018年10月23日 python3下執行通過

#-*- coding:utf-8 -*-
import itchat
from itchat.content import *
import requests
import json
import hashlib
import random


def is_chinese(uchar):
    if '\u4e00' <= uchar <= '\u9fff':
        return True
    else:
        return False


@itchat.msg_register(TEXT)
def reply_text(msg):
    from_text = msg['Text']
    # 訊息帶有 ‘#’ 字首為翻譯
    if from_text[0] == '#':
        if is_chinese(from_text[1:]):
            fromLang = 'zh'
            toLang = 'en'
        else:
            fromLang = 'en'
            toLang = 'zh'
        to_text = baidu_trans_api(from_text[1:], fromLang, toLang)
        itchat.send(to_text, msg['FromUserName'])
    else:
        to_text = tuling(from_text)
        itchat.send(to_text, msg['FromUserName'])


def tuling(info):
    appkey = "e5ccc9c7c8834ec3b08940e290ff1559"
    url = "http://www.tuling123.com/openapi/api?key=%s&info=%s" % (appkey, info)
    req = requests.get(url)
    content = req.text
    data = json.loads(content)
    answer = data['text']
    return answer

def baidu_trans_api(info, fromLang, toLang):
    appid = '20181022000223013'  # 你的appid
    secretKey = '9gQCAqD08KIRxUpPR1ra'  # 你的金鑰
    myurl = 'http://api.fanyi.baidu.com/api/trans/vip/translate'
    salt = random.randint(32768, 65536)

    def md5(str):
        str = str.encode('utf-8')  # python2 不需要此行程式碼
        m = hashlib.md5()
        m.update(str)
        return m.hexdigest()

    sign = appid + info + str(salt) + secretKey
    sign = md5(sign)

    myurl = myurl + '?appid=' + appid + '&q=' + info + '&from=' + fromLang + '&to=' + toLang + '&salt=' + str(
        salt) + '&sign=' + sign
    response = requests.get(myurl)
    try:
        return response.json()["trans_result"][0]["dst"]
    except:
        return response.json()["error_msg"]


if __name__ == '__main__':
    itchat.auto_login(hotReload=True)
    itchat.run()

在這裡插入圖片描述