开发一款通过微信聊天来学英语的程序

一、前言

先展示视频演示效果:
在这里插入图片描述

在日常生活当中我们离不开微信的使用,据统计,

就每日情况而言,微信日使用时长在“4小时以上”的受访者人数最多,占比为25%;
就每周使用微信天数来看,周使用天数在“7天”的受访者人数最多,占比为88.1%[1]

可见,我们每天使用微信的时间是非常长的,而我们使用微信普遍是用来通信、传达信息,简单称之为“聊天”。既然如此,我们是否可以在使用微信聊天的同时还能学习英语呢?

我们尝试在聊天时,将需要发送的信息,转换成英文再发送。

二、技术路线

由于技术限制,这里只在微信PC端实现。

  1. 获取微信聊天输入框位置
  2. 复制将要发送的文本信息
  3. 翻译文本信息
  4. 发送翻译之后的信息

2.1 获取聊天输入框位置

这里可以参考我之前的一篇博客,里面详细讲解了获取微信聊天输入框位置的方法。
用python识别微信消息界面聊天输入框位置

这一步是非必需的,它的作用是在微信输入框没有获取焦点的时候也同样可以使用,在代码中我省略了这一步。

2.2 复制将要发送的文本信息

这里通过一种最原始直接的方式来实现:程序通过按键Ctrl+ACtrl+C进行全选和复制。

使用pynput库可以实现操控电脑的鼠标和键盘

from pynput.keyboard import Controller as KeyController
key = KeyController()

# 键盘按下并释放 Ctrl+A键
key.press(Key.ctrl_l)
key.press('a')
key.release('a')
key.release(Key.ctrl_l)

2.3 翻译文本信息

这里调用腾讯云的机器翻译API进行翻译。(不用花钱,免费额度已经够用了。)

文本翻译的每月免费额度为5百万字符。[2]

如果想了解API的详细使用方法可以查看官方文档

如果不想看文档的话,我在代码中已经配置好可以使用了,前提是你需要先有一个腾讯云密钥,获取方法如下:

  1. 进入密钥管理界面,(进去之后需要先登录账户)
  2. 新建密钥

新建好密钥之后就能得到SecretIdSecretKey。这两个参数需要加到代码里面。
在这里插入图片描述

2.4 发送翻译之后的信息

对翻译好文本信息进行复制,在微信聊天输入框按键Ctrl+V进行粘贴,然后发送。

以上这些步骤包括按键都是由程序自动完成,你只需要在合适的时机触发程序即可。
至于如何触发?可根据自己喜好来设置按键,比如设置为Alt+Enter发送中午+英文,原本的Enter保持不变。

对于如何获取剪贴板的文本,这里使用pyperclip库实现

import pyperclip as pc
text = pc.paste()  # 获取剪贴板内容
pc.copy('text')  # 复制文本

三、总结

  1. 这是一种可行的利用微信聊天来学习英语的方式,虽然不能成为我们专门唯一的学习英语的方式,但是在日常聊天的同时顺便学习一下英文,这也无伤大雅。
  2. 我们在使用这种方式的时候也要考虑对方的感受,如果面对的是上司、同事或者不熟悉的人,最好不要这样做,选择在跟家人、好朋友或者熟悉的人聊天时才使用这种方式。

在这里插入图片描述

四、代码

4.1 安装第三方库。

安装 pynput 和 pyperclip:

pip install pynput
pip install pyperclip

安装腾讯云SDK,也就是代码中用到的tencentcloud

pip install tencent-cloud-sdk

上面这条语句会安装腾讯云的所有产品,如果你想只安装单个腾讯云产品,请参考官方文档

4.2 注意事项

  • 程序运行请必须先获取腾讯云密钥中的SecretId和SecretKey,并且写入代码。
  • 原始触发程序的按键是Alt_R+Enter,如果需要更换,可以自行修改,但是有些按键可能会出现bug。

4.3 完整代码

import time
import json
import pyperclip as pc
from pynput.keyboard import Key
from pynput.keyboard import Controller as KeyController
from pynput.keyboard import GlobalHotKeys
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.tmt.v20180321 import tmt_client, models


SecretId = ''
SecretKey = ''  # 在腾讯云获取
assert SecretId and SecretKey
cred = credential.Credential(SecretId, SecretKey)
httpProfile = HttpProfile()
httpProfile.endpoint = 'tmt.ap-guangzhou.tencentcloudapi.com'

clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
client = tmt_client.TmtClient(cred, "ap-guangzhou", clientProfile)
req = models.TextTranslateRequest()


key = KeyController()


def set_key_ctrl_abc(k):
    time.sleep(0.15)  # 不能省略
    key.press(Key.ctrl_l)
    key.press(k)
    key.release(k)
    key.release(Key.ctrl_l)
    time.sleep(0.15)  # 不能省略


def press_and_release(k):
    key.press(k)
    key.release(k)


def translate(text):
    params = {
        'SourceText': text,
        'Source': 'auto',
        'Target': 'en',
        'ProjectId': 0
    }
    req.from_json_string(json.dumps(params))
    resp = client.TextTranslate(req)

    return resp.TargetText


def learn_english():
    set_key_ctrl_abc('a')
    set_key_ctrl_abc('c')
    originalText = pc.paste()
    content = translate(originalText)
    pc.copy(originalText + '\n' + content)
    set_key_ctrl_abc('v')
    press_and_release(Key.enter)


if __name__ == '__main__':
    print('program has started')
    with GlobalHotKeys({  # 监听键盘 Alt_R+Enter
                        '<alt_gr>+<enter>': learn_english
                        }) as listener:
        listener.join()

参考:
[1]. https://www.thepaper.cn/newsDetail_forward_13662510
[2]. https://cloud.tencent.com/document/product/551/35017

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值