溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python如何實(shí)現(xiàn)微信翻譯機(jī)器人

發(fā)布時(shí)間:2021-04-06 11:07:48 來(lái)源:億速云 閱讀:122 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下Python如何實(shí)現(xiàn)微信翻譯機(jī)器人,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

功能:

發(fā)送要翻譯的內(nèi)容給我們的翻譯小助手,它會(huì)自動(dòng)回復(fù)翻譯好的內(nèi)容。

環(huán)境配置:

Python版本:3.6.0

系統(tǒng)平臺(tái):Windows 10 X64

IDE:pycharm

相關(guān)模塊:

json模塊

itchat模塊

re模塊

request模塊

parse模塊

以及一些Python自帶的模塊。

根據(jù)內(nèi)容獲取翻譯的結(jié)果

這里使用的是有道翻譯API接口。大致思路說(shuō)一下:

1. 創(chuàng)建連接接口 2. 創(chuàng)建要提交的數(shù)據(jù) 3. 將數(shù)據(jù)轉(zhuǎn)化為服務(wù)器可以處理的信息并提交

4. 返回翻譯結(jié)果

這部分功能我們封裝成一個(gè)函數(shù),參數(shù)是需要發(fā)送的微信用戶名,需要翻譯的內(nèi)容。

數(shù)據(jù)格式我們是以json的格式發(fā)送過(guò)去的,然后獲取的也是json的數(shù)據(jù)格式,該過(guò)程需要做些轉(zhuǎn)換。

還需要把數(shù)據(jù)轉(zhuǎn)換成utf-8的編碼,回來(lái)的數(shù)據(jù)也需要做相應(yīng)的轉(zhuǎn)換和解析,具體看下面代碼:

def translate(userName, content):
   req_url = 'http://fanyi.youdao.com/translate' # 創(chuàng)建連接接口
   # 創(chuàng)建要提交的數(shù)據(jù)
   Form_Date = {}
   Form_Date['i'] = content # 輸入要翻譯的內(nèi)容
   Form_Date['doctype'] = 'json'
 
   data = parse.urlencode(Form_Date).encode('utf-8') # 數(shù)據(jù)轉(zhuǎn)換
   response = request.urlopen(req_url, data) # 提交數(shù)據(jù)并解析
  html = response.read().decode('utf-8') # 服務(wù)器返回結(jié)果讀取
  # 可以看出html是一個(gè)json格式
  translate_results = json.loads(html) # 以json格式載入
  translate_results = translate_results['translateResult'][0][0]['tgt'] # json格式調(diào)取
  print(translate_results) # 輸出結(jié)果
  itchat.send(translate_results, toUserName=userName) #發(fā)送翻譯結(jié)果

不了解的同學(xué)在仔細(xì)看看代碼注釋。

微信收發(fā)送消息

關(guān)于微信收發(fā)送消息呢,可以看看之前Python打造天氣預(yù)報(bào)機(jī)器這一篇文章,代碼是直接從那邊稍加修改搬過(guò)來(lái)的。

那邊是獲取天氣,這邊是獲取翻譯結(jié)果,思路都是一樣的。直接看代碼就可以了:

# 如果對(duì)方發(fā)的是文字,則我們給對(duì)方回復(fù)以下的東西
 @itchat.msg_register([TEXT])
 def text_reply(msg):
   match = re.search('翻譯',msg['Text'])
   if match:
     content = msg['Text'][msg['Text'].find("+")+1:]
     translate(msg['FromUserName'], content)
itchat.auto_login()
itchat.run()

我們需要對(duì)消息進(jìn)行匹配分析,以便確定用戶需要的是翻譯功能而不是天氣預(yù)報(bào)等功能,所以需要利用re進(jìn)行匹配一下關(guān)鍵字。

然后調(diào)用translate函數(shù)進(jìn)行獲取發(fā)送。

完整代碼:

# 有道翻譯結(jié)果獲取
 '''
大致思路如下
 1.  創(chuàng)建連接接口
 
 2.  創(chuàng)建要提交的數(shù)據(jù)
 
.  將數(shù)據(jù)轉(zhuǎn)化為服務(wù)器可以處理的信息并提交
.  返回翻譯結(jié)果
'''
# 引入python中內(nèi)置的包json. 用來(lái)解析和生成json數(shù)據(jù)的
import json
import itchat
import re
from itchat.content import *
from urllib import request, parse
def translate(userName, content):
  req_url = 'http://fanyi.youdao.com/translate' # 創(chuàng)建連接接口
  # 創(chuàng)建要提交的數(shù)據(jù)
  Form_Date = {}
  Form_Date['i'] = content # 輸入要翻譯的內(nèi)容
  Form_Date['doctype'] = 'json'
  data = parse.urlencode(Form_Date).encode('utf-8') # 數(shù)據(jù)轉(zhuǎn)換
  response = request.urlopen(req_url, data) # 提交數(shù)據(jù)并解析
  html = response.read().decode('utf-8') # 服務(wù)器返回結(jié)果讀取
  # 可以看出html是一個(gè)json格式
  translate_results = json.loads(html) # 以json格式載入
  translate_results = translate_results['translateResult'][0][0]['tgt'] # json格式調(diào)取
  print(translate_results) # 輸出結(jié)果
  itchat.send(translate_results, toUserName=userName) #發(fā)送翻譯結(jié)果
# 如果對(duì)方發(fā)的是文字,則我們給對(duì)方回復(fù)以下的東西
@itchat.msg_register([TEXT])
def text_reply(msg):
  match = re.search('翻譯',msg['Text'])
  if match:
    content = msg['Text'][msg['Text'].find("+")+1:]
    translate(msg['FromUserName'], content)
itchat.auto_login()
itchat.run()

看完了這篇文章,相信你對(duì)“Python如何實(shí)現(xiàn)微信翻譯機(jī)器人”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI