Loading [MathJax]/jax/output/CommonHTML/config.js
部署DeepSeek模型,进群交流最in玩法!
立即加群
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >再不怕和老外聊天了!我用python写了个微信聊天翻译助手!

再不怕和老外聊天了!我用python写了个微信聊天翻译助手!

作者头像
bigsai
发布于 2020-01-17 08:24:49
发布于 2020-01-17 08:24:49
57100
代码可运行
举报
文章被收录于专栏:bigsaibigsai
运行总次数:0
代码可运行

前言

在前面的一篇文章如何用python“优雅”的调用有道翻译?中咱们清楚的写过如何一层一层的解开有道翻译的面纱,并且笔者说过那只是脑洞的开始。现在笔者又回来了。Teach you how to flirt gracefully with code。在本文中,我将详细讲解这个翻译的具体实现!对于实现的主要功能:通过微信聊天监听一些关键的口令,开启自己说的话的翻译模式和对面说的话的翻译模式!一方面可以应付老外,另一方面可以zhuang x行骗.

设计思路:前面有了调用翻译,我们可以和翻译接口微信的api结合起来做一些有趣的事情,主要就是利用微信api对自己发的消息进行监测,然后有些关键字判断作为开关、修改翻译语言等等(逻辑可以自己设置),接着去请求有道翻译,利用程序自动发送翻译的话给对方。然后再假装把自己当成一无所知的萌新------看你怎么操作了(手动滑稽)

当然,如果你有个韩国朋友或者其他外国友人,他说的话自动翻成中文,发给你,你说的话自动翻成韩文再发给他。有资源的小哥哥小姐姐可以去试试洋妞洋娃娃

详细设计

既然前面的思路很明确了,那么咱么一步一步来,如何攻克其中的种种问题。主要两个方面,一个是单独的微信api和单独的请求有道翻译一些其他规则另一方面是将两者整合起来,可以让人人性化的操作!

当然解决了这两项之后,你就可以自己实现一些逻辑开关,而我就用我的逻辑简单的实现了一下!

环境:win/linux 编译器pycharm 额外模块:itchat、requests

微信api

微信方公开了微信网页版的api。python中的itchat模块就可以直接使用。当然摸索起来也是需要时间。有些必要的学习步骤我就放上了。

1 . 对于itchat模块的扫码登录。后面可以不加参数,但是加了这个hotReaload之后短期内可以不需要扫码,不然每次启动扫码耽误效率。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import itchat
itchat.auto_login(hotReload=True)

2 . 至于还有一个发消息的api也很简单,后面的userName是用户的唯一的被加密的字段,当然,文件传输助手有专门id,还有其他搜索好友名通过返回的json串也可以获得用的该id。总之这个字段很好获得。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
itchat.send("你好",toUserName = userName)

3 . 最重要的就是消息的监听了,对于消息监听,大部分百度到的结果都是将程序做成机器人,监听对面消息然后自动回复,但是笔者要的不仅仅是这个效果,我还要监听自己移动端微信发的消息然后进行分析判断翻译发送等等。

对于正常的监听都是这样的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 注册消息响应事件,消息类型为itchat.content.TEXT,即文本消息。也可以监听多种类型可自行百度
@itchat.msg_register(itchat.content.TEXT)
def text_reply(msg):
   return msg['Text']#return “字符串” 当接受到对面消息时候,就会发过去充当机器人 
itchat.run()

但是,如果你如果在其中print(msg).你会发现你自己发的消息也会被监听到,这里的就是from you send to he/she。所以可以获取里面内容自己利用itchat发送sendapi主动发送消息。当然,你发送的内容主体等各种信息都在里面,py正好也很方便操作字典。

在这里插入图片描述

那么这部分的最终设计是这样的: 其中如果是对面发来的消息我们直接return 字符串就会发送,如果是自己发的消息,自己send调用发送信息即可!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 注册消息响应事件,消息类型为itchat.content.TEXT,即文本消息
@itchat.msg_register(itchat.content.TEXT)
def text_reply(msg):
     #xxxxx 逻辑处理如果自己发
     itchat.send(transtr, toUserName=msg['ToUserName'])#将字符串transtr发给你发的人
     #xxxxx 逻辑处理如果ta发
     return transtr#这个加上是如果对面发消息的监听。也就是对面发消息过来你直接return就会自动发送
itchat.run()

有道api

对于其他的前面已经分析过,这里需要注意的是翻译成的语言,比如中翻译英(en)、日语(ja)、韩语(ko)等等。所以你点几个典型的放到逻辑处理里面就好了。

在这里插入图片描述

整体逻辑

当然,我想写个逻辑可以控制发送翻译的开始、结束。所以我监听用两个个Boolean类型控制整个开始和暂停,其中jud用来判断自己是否开启自己说的话的装(b)翻译模式。而参数isreturn用来控制判断是否翻译洋娃娃说的话。关键词这里我选开始作为开始,停止作为结束控制自己说的话。而翻译模式停止翻译则用来控制开始和停止说的话。英语、日语、韩语、法语、等作为翻译语言更改的关键词。

那么,一旦程序跑起来,一切都在我们的掌控之中,当然,测试过效率,虽然那个itchat,和有道翻译的数据都是通过http传输的,但是其实效率还行,对于聊天来说传输效率是可以接受的。延迟不算很大,能满足基本需求。但是切记不要太快太频繁哈,防止有道把你的ip封了你就无法请求了。

代码和运行结果

就这样,我把项目的代码完整的供出来。

项目github地址(微信模块):https://github.com/javasmall/python 欢迎star!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#更多请关注公众号:bigsai
import itchat
import requests
import hashlib
import time
import urllib.parse

jud=False#默认是先不开启
isreturn=False#是否回复
To='en'#翻译成的语言默认是英语

def nmd5(str):#md5加密
    m = hashlib.md5()
    b = str.encode(encoding='utf-8')
    m.update(b)
    str_md5 = m.hexdigest()
    return  str_md5
def formdata(transtr):
    # 待加密信息
    global To
    headerstr = '5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
    bv=nmd5(headerstr)
    ts=str(round(time.time()*1000))
    salt=ts+'90'
    strexample='fanyideskweb'+transtr+salt+'n%A-rKaT5fb[Gy?;N5@Tj'
    sign=nmd5(strexample)
    i=len(transtr)
    dict={'i':transtr,'from':'AUTO','to':To,'smartresult': 'dict',
          'client':'fanyideskweb',
          'salt':salt,
          'sign':sign,
          'ts':ts,
          'bv':bv,
          'doctype':'json',
          'version':'2.1',
          'keyfrom':'fanyi.web',
          'action':'FY_BY_REALTlME'
    }
    return dict
url='http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36',
 'Referer':'http://fanyi.youdao.com/',
 'Origin': 'http://fanyi.youdao.com',
 'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
 'X-Requested-With':'XMLHttpRequest',
 'Accept':'application/json, text/javascript, */*; q=0.01',
 'Accept-Encoding':'gzip, deflate',
 'Accept-Language':'zh-CN,zh;q=0.9',
 'Connection': 'keep-alive',
 'Host': 'fanyi.youdao.com',
 'cookie':'_ntes_nnid=937f1c788f1e087cf91d616319dc536a,1564395185984; OUTFOX_SEARCH_USER_ID_NCOO=; OUTFOX_SEARCH_USER_ID=-10218418@11.136.67.24; JSESSIONID=; ___rl__test__cookies=1'
 }
itchat.auto_login(hotReload=True)#登录


# 注册消息响应事件,消息类型为itchat.content.TEXT,文本消息
@itchat.msg_register(itchat.content.TEXT)
def text_reply(msg):
    # 返回信息调用信息
    global jud
    global To
    global  isreturn
    text=msg['Text']
    dict = formdata(text)
    if "翻译模式" in text:
        isreturn =True
    elif "停止翻译" in text:
        isreturn=False
    if  "开始" in text:
        jud=True
    elif  "停止" in text:
        jud=False
    elif "英语" in text:
        To = 'en'
    elif "日语" in text:
        To = 'ja'
    elif "韩语" in text:
        To = 'ko'
    elif "法语" in text:
        To = 'fr'
    if jud:#说明需要运行
        dict['to']=To
        dict['from']= 'AUTO'
        dict = urllib.parse.urlencode(dict)
        dict = str(dict)
        req = requests.post(url, timeout=1, data=dict, headers=header)
        val = req.json()
        transtr = val['translateResult'][0][0]['tgt']
        print(msg)
        itchat.send(transtr, toUserName=msg['ToUserName'])
    ##返回监听对面说的话
    if isreturn:
        dict['from']='AUTO'
        dict['to']='zh-CHS'##翻译成中文
        dict = urllib.parse.urlencode(dict)
        # dict = str(dict)
        req = requests.post(url, timeout=1, data=dict, headers=header)
        val = req.json()
        transtr = val['translateResult'][0][0]['tgt']
        print(msg)
        return 'ta说:'+str(transtr)#这个加上是如果对面发消息的监听。比如你是双向翻译可以尝试下
# 绑定消息响应事件后,让itchat运行起来,监听消息
itchat.run()

鉴于笔者真没有洋娃娃,五行缺洋妞!所以只能模拟了 简单运行测试结果(拿队友手机自导自演)

结语

当然,这或许可能很有趣,又或许可能很无聊很简单,只是不同的人可能有不同的看法,不同的时间段、不同的交际都可能有不同的看法,所以请各位大佬不喜勿喷,当然,如果有改进的建议,还请指出! python相关仓库和项目github地址:https://github.com/javasmall/python/tree/master/%E7%88%AC%E8%99%AB/Include/%E5%BE%AE%E4%BF%A1,(微信文件目录下translate.py文件)有兴趣的可以玩玩,star star!

如果感觉还行还请各位动动小手点点再看、将创意与乐趣分享?!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 bigsai 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于itchat实现微信群消息同步机器人
最近 全栈数据工程师养成攻略 的微信群已经将近500人,开了二群之后为了打通不同微信群之间的消息,花了点时间做了个消息同步机器人,在任意群收到消息时同步到其他群,并且将聊天内容上传至数据库,以供进一步分析、统计和展示。 基本思路是,用 Python 模拟微信登陆,接收到群里消息后,对文本、图片、分享等各类消息类型分别处理,并转发至其他群。 前期准备 首先得有一个微信号,用于代码模拟登陆。由于我的微信号得自己留着用,现阶段注册微信又必须要手机号,于是只好特意办了个电信号,用来申请了一个新的微信,微信号是 ho
张宏伦
2018/06/07
3.4K1
10分钟教你用Python实现微信翻译机器人
今天,利用Python爬虫等知识,教大家打造一个微信下的翻译小助手。好吧,开始干活。
短短的路走走停停
2019/05/14
1.1K0
基于itchat实现微信群消息同步机器人1.0
上次的微信消息同步机器人存在一些问题,在使用过程中也有些不方便。今天终于不能忍了,抽出时间改了改,进行了一些改进,以下是完善后的版本。 ---- 最近 全栈数据工程师养成攻略 的微信群已经将近500人,开了二群之后为了打通不同微信群之间的消息,花了点时间做了个消息同步机器人,在任意群收到消息时同步到其他群,并且将聊天内容上传至数据库,以供进一步分析、统计和展示。 基本思路是,用 Python 模拟微信网页版登陆,接收到群里消息后,对文本、图片、分享等各类消息类型分别处理,并转发至其他群。 前期准备 首先得
张宏伦
2018/06/07
3.1K0
如何用python“优雅”的调用有道翻译?
其实在以前就盯上有道翻译了的,但是由于时间问题一直没有研究(我的骚操作还在后面,记得关注),本文主要讲解如何用python调用有道翻译,讲解这个爬虫与有道翻译的js“斗争”的过程!
bigsai
2020/02/10
1K0
用Python教你通过微信来控制电脑摄像头
如果说强大的标准库奠定了Python发展的基石,丰富的第三方库则是python不断发展的保证。今天就来通过itchart库来实现通过微信对电脑的一些操作。
小小詹同学
2019/10/24
8950
微信模拟个人号itchat库使用教程
chatgpt的这把火也把QQ机器人,WX机器人,WEB机器人各种智能问答类的应用带火了。
手撕代码八百里
2023/11/17
3.5K0
微信模拟个人号itchat库使用教程
【Python】30行代码教你将微信变成智能回复机器人
摘要:使用微信itchat接口和图灵机器人接口,三十行代码将你的微信变成聊天机器人,自动回复来自好友的消息。 01 — itchat安装与使用说明 itchat安装 简单安装:pip install itchat 源码安装(下载地址):https://pypi.python.org/pypi/itchat#downloads windows:下载whl包,直接pip install *.whl即可;Linux 下载tar.gz包运行setup.py即可。 itchat使用说明 具体详情可以参见
CodeInHand
2018/03/26
2.8K0
【Python】30行代码教你将微信变成智能回复机器人
如何用Python找回微信撤回信息
在互联网飞速发展的下、民众的需求下,已经进入全民微信时代。村口的张大妈,家里的老父亲都知道怎么使用微信。
程序员小二
2022/01/06
1.8K0
如何用Python找回微信撤回信息
Python骚操作——用30行代码打造微信聊天机器人
前段时间写过一篇微信好友大揭秘,很多朋友对itchat非常感兴趣,今天下午又学到了itchat另一种有趣的玩法---微信自动回复机器人。
Python进阶者
2019/10/15
2.2K0
Python实现微信机器人——itchat库
itchat是一个开源的微信个人号接口,可以使用该库进行微信网页版中的所有操作,比如:所有好友、添加好友、拉好友群聊、微信机器人等等。详细用户请看文档介绍,在这里。
程序员迪迪
2021/12/21
1.8K0
想查看微信好友撤回的消息?Python帮你搞定
比如你现在正和女朋友用微信聊着天,或者跟自己喜欢的女孩子聊着天,一个不留神,你没注意到对方发的消息就被她及时撤回了,这时你很好奇,好奇她到底发了什么?于是你打算问问她发了什么,结果她回一句"没什么"。这一回复,让你的好奇心更加强烈了,顿时就感觉消息撤回这一功能就是用来折磨人的。
wangweijun
2020/01/17
1.2K0
一支烟的时间导致他错失女神,Python查看撤回消息,力挽狂澜!
微信(WeChat) 是腾讯公司于2011年1月21日推出的一个为智能终端提供即时通讯服务的免费应用程序,由张小龙所带领的腾讯广州研发中心产品团队打造 。在互联网飞速发展的下、民众的需求下,微信已经更新到6.6.6版本,全民微信时代。村口的张大妈,家里的老父亲都知道怎么使用微信。
IT派
2018/07/30
4540
一支烟的时间导致他错失女神,Python查看撤回消息,力挽狂澜!
Python 有道翻译爬虫,破解 sign 参数加密反爬机制,解决{"errorCode":50}错误
很多人学习 Python 爬虫的第一个爬虫就是爬的有道翻译,但是现在由于有道翻译进行了参数加密,增加了反爬机制,所以很多新手在使用以前的代码的时候经常会遇到 {"errorCode":50} 错误。这篇文章就来分析一下有道翻译的反爬机制,依然通过 Python 爬虫来爬有道翻译。
Hopetree
2022/09/26
1.7K0
Python 有道翻译爬虫,破解 sign 参数加密反爬机制,解决{"errorCode":50}错误
ItChat与图灵机器人的结合
个人账号可以通过ItChat获取即时消息 并实时通过图灵机器人的API得到反馈发送出去
py3study
2020/01/19
1.4K0
ItChat与图灵机器人的结合
微信机器人
使用它可以方便的完成 回复消息、搜索好友、被添加自动回复、获取好友信息等功能,当然功能不止于这些,这里我们用到了回复信息功能
双鬼带单
2018/12/05
7.3K2
微信发博客
在小武 2 岁的时候我创建了 《小武成长记》 网站: http://jiaxianhua.com
iOSDevLog
2019/04/29
9900
微信发博客
微信机器人进化指南
听说阿尔法狗又要挑战柯杰了。时至今日,人工智能不断刷新我们对这个世界的理解。或许再过不久,你真的不知道跟你在网上聊天的对象还是不是一个“人”,也不知道自己的工作会不会有天就被机器给取代了。 要想不被机器淘汰,那只能“进化”得比机器还快! 之前我们介绍了一个可以记录微信撤回消息的小工具,参见 再也不用担心错过几个亿啦:基于Python的微信消息防撤回工具 今天我们就来讲讲它的实现基础 - itchat。文末将给出一个基于 itchat 开发的微型微信聊天机器人。 itchat 是一个开源的微信个人公众号接口,
Crossin先生
2018/04/17
3.9K0
微信机器人进化指南
Python网络爬虫(八) - 利用有道词典实现一个简单翻译程序1.爬虫前的分析2.Python使用MD5加密字符串3.代码操作基于python3.5
因为要实现有道翻译的翻译功能,就需要找到它的接口,打开审查元素,来到网络监听窗口(Network),查看API接口。
Python攻城狮
2018/08/23
6980
Python网络爬虫(八) - 利用有道词典实现一个简单翻译程序1.爬虫前的分析2.Python使用MD5加密字符串3.代码操作基于python3.5
itchat微信的python库2023.5.4
用户7138673
2023/08/16
1.2K1
itchat微信的python库2023.5.4
78行Python代码帮你复现微信撤回消息!
[ 导读 ]Python曾经对我说:"时日不多,赶紧用Python"。于是看到了一个基于python的微信开源库:itchat,玩了一天,做了一个程序,把私聊撤回的信息可以收集起来并发送到个人微信的文件传输助手,包括:
数据派THU
2018/07/30
6620
78行Python代码帮你复现微信撤回消息!
推荐阅读
相关推荐
基于itchat实现微信群消息同步机器人
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验