码农公社  210.net.cn  210是何含义?10月24日是程序员节,1024 =210、210既

210

之意。

当你遇到一些外国小哥哥小姐姐很心动、想结识交流,但英语水平或其他水平还在提升阶段,这个小工具可以帮你渡过难关!Teach you how to flirt gracefully with code。在本文中,我将详细讲解这个翻译的具体实现!对于实现的主要功能: 通过微信聊天监听一些关键的口令,开启自己说的话的翻译模式和对面说的话的翻译模式!

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

详细设计

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

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

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

微信api

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

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

itchat.auto_login(hotReload=True)

复制代码

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

复制代码

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

对于正常的监听都是这样的# 注册消息响应事件,消息类型为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 发送 send 的 api 主动发送消息。当然,你发送的内容主体等各种信息都在里面,py正好也很方便操作字典。

那么这部分的最终设计是这样的: 其中如果是对面发来的消息我们直接return 字符串就会发送,如果是自己发的消息,自己send调用发送信息即可!# 注册消息响应事件,消息类型为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地址(微信模块): github.com/javasmall/p… 欢迎star!#更多请关注公众号:bigsaiimport itchatimport requestsimport hashlibimport timeimport 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_md5def 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老外_再也不怕和老外交流了,用python实现一个微信聊天翻译助手!相关推荐

  1. python外国人也用吗_再也不怕和老外交流了!我用python实现一个微信聊天翻译助手!...

    前言 在前面的一篇文章如何用python"优雅的"调用有道翻译中咱们清楚的写过如何一层一层的解开有道翻译的面纱,并且笔者说过那只是脑洞的开始.现在笔者又回来了.当你遇到一些外国小哥 ...

  2. 再也不怕和老外交流了!我用python实现一个微信聊天翻译助手!

    文章目录 前言 详细设计 微信api 有道api 整体逻辑 代码和运行结果 结语 前言 在前面的一篇文章如何用python"优雅的"调用有道翻译中咱们清楚的写过如何一层一层的解开有 ...

  3. python黑科技:Python大佬用20行代码带你打造一个微信聊天机器人,真神了~

    如何用20行Python代码打造一个微信群聊助手? 1.安装python环境 2.安装python的itchat库 3.安装itchat库 4.Linux 5.申请图灵机器人API和key 6.编写p ...

  4. 大学使用python 编辑器_[雪峰磁针石博客]2018 最佳python编辑器和IDE

    IDE没有统一的标准,自己习惯就是最好的.本文列出一些较常用的IDE,供大家参考. 一般而言,WingIDE.PyCharm.Spyder.Vim是比较常用的IDE. Spyder Spyder是Py ...

  5. python网页版_经典python学习教程:20行代码打造一个微信群聊助手,解放双手

    今天的Python学习教程教大家如何用20行Python代码实现微信群聊助手,可以用来活跃群气氛,好多群主创建完群后,拉完一群人,之后就一片寂静,有个群聊助手,就可以帮忙活跃群里气氛,通过今天在自己的 ...

  6. 逻辑性不好可以学python吗_如果本文若未能让你学会“Python”,可能真的不适合学习Python...

    很多小伙伴们会问学习Python难学吗? python就是以他简单易学出名的.几乎是现在最简单,却可塑性最高的语言了.一般有其它编程语言基础的,自学,三小时左右就能学会.现在Python都有给小朋友的 ...

  7. ubuntu安装python百度经验_如何在Ubuntu 20.04上安装Python 3.9(含python编译安装和使用Apt命令安装)...

    在本文中,我们将向您展示在Ubuntu 20.04上安装Python 3.9的两种方法.第一种使用APT命令安装Python3.9,第二种是在Ubuntu20.04上编译安装Python 3.9.本教 ...

  8. 上海python招聘微信群_如何用20行Python代码打造一个微信群聊助手?

    今天要教大家一个黑科技,20行代码实现自己定制的微信群聊助手,可以用来活跃群气氛,好多群主创建完群后,拉完一群人,之后就一片寂静,有个群聊助手,就可以帮忙活跃群里气氛,通过今天在自己的微信上有一大批好 ...

  9. 运行github中python程序_从phon上的github直接运行python代码

    有没有移动pythonide可以让你直接从GitHub下载代码到应用程序中?事实上,IDE将是一个过火-我不需要在应用程序中编写代码,只需要运行代码作为一个快速演示来与人们讨论想法.我的代码不启动gu ...

最新文章

  1. 选择适合自己的那款操作系统
  2. 阿里mysql连接数据库服务器配置_配置链接mysql数据库
  3. javascript函数调用的几种方式
  4. 基于visual Studio2013解决C语言竞赛题之1070删除相同节点
  5. MD5计算,一个扩展类,哪里都能用
  6. php 函数封装上传,PHP(多)文件上传实现和函数封装
  7. (转)为Ubuntu安装翻译词典(星际译王)
  8. 张雁飞 mysql_张雁飞:新一代分布式关系型数据库RadonDB
  9. eemd优缺点_基于EEMD的信号处理方法分析和实现
  10. 剑指offer面试题[40]-数组中只出现一次的数字
  11. C++基础:第六章 语句
  12. HTML中IE条件注释判断语句(!--[if XX IE X]![endif]--)
  13. 无刷直流电机学习笔记5
  14. 【懒懒的Python学习笔记一】
  15. 王晓阳的搜狐博客被封了
  16. win7英文版很多软件中文显示乱码解决方案
  17. VB基础版版务处理_20041210
  18. 猜数字游戏实现(详解)
  19. PyQt——QLabel
  20. 【2022新书】机器学习在金融时间序列分析与预测中的应用

热门文章

  1. ZIGBEE模块调试记录和总结
  2. Linux 常用SIG信号及其键值
  3. Python中的爱因斯坦阶梯
  4. 玩转Linux命令-合集
  5. Autosar模式管理系列介绍01-BswM
  6. 联想a366t 刷android4,联想A366T刷机教程.doc
  7. 树莓派网线直连笔记本电脑
  8. 《算法零基础100讲》(第1讲) 幂和对数
  9. 天气预报接口(weather.com.cn)
  10. 信度效度难度区分度是什么意思_难度、区分度、信度、效度