输入中文变量名自动返回英文变量名的脚本
提示:以下是本篇文章正文内容,下面案例可供参考
代码如下(示例):
class Youdao(object):
def __init__(self):
# 要翻译的内容
self.word = gettext().decode('gbk')
self.url = 'https://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
self.headers = {
"Cookie": "[email protected]; OUTFOX_SEARCH_USER_ID_NCOO=1474258707.2598014; _ga=GA1.2.1009520071.1594950987; _ntes_nnid=e128de31dea304b779062ae8d3a3d1a4,1603424745279; JSESSIONID=aaa5npeigFJ3e-GQKnkQx; ___rl__test__cookies=1625816457871",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400",
"Referer": "https://fanyi.youdao.com/"
}
self.data = {}
def generate_post_data(self):
# 获取时间戳
r = str(int(time.time() * 1000))
# 拼接一个随机数
i = r + str(random.randint(0, 9))
# 获取sign
sign = self.md5("fanyideskweb" + self.word + i + "@6f#X3=cCuncYssPsuRUE")
self.data = {
"i": self.word,
"from": "AUTO",
"to": "AUTO",
"smartresult": "dict",
"client": "fanyideskweb",
"salt": i,
"sign": sign,
"ts": r,
"bv": "8d869977ed9730c759a83d50a1f65ed0",
"doctype": "json",
"version": "2.1",
"keyfrom": "fanyi.web",
"action": "FY_BY_REALTlME",
}
def md5(self, data):
# 1获取md5对象
md5 = hashlib.md5()
# 2添加源数据
md5.update(data.encode())
# 3得到结果
result = md5.hexdigest()
return result
def get_data(self):
response = requests.post(self.url, data=self.data, headers=self.headers)
return response.content.decode()
def parse_data(self, data):
"""数据的提取"""
data_dict = json.loads(data)
result = data_dict['translateResult'][0][0]['tgt']
return result
# print('翻译的结果是' + result)
def run(self):
pass
# 1 确定url header是
# 2 确定数据data
self.generate_post_data()
# 3发送请求
data = self.get_data()
#print(data)
# 4数据的提取
s=self.parse_data(data).title().replace(" ", "")#规范一下变量名
aa=s[0].lower()+s[1:]
pyperclip.copy(aa)
spam = pyperclip.paste()
代码如下(示例):
def gettext():
w.OpenClipboard()
t = w.GetClipboardData(win32con.CF_TEXT)
w.CloseClipboard()
return t
这里扒来的:https://blog.csdn.net/lsjweiyi/article/details/79137931
代码如下(示例):
RUN=False #用来传递运行一次的参数
EXIT = False #用来传递退出的参数
user32 = ctypes.windll.user32 #加载user32.dll
id1=105 #注册热键的唯一id,用来区分热键
id2=106
class Hotkey(threading.Thread): #创建一个Thread.threading的扩展类
def run(self):
global EXIT #定义全局变量,这个可以在不同线程间共用。
global RUN #定义全局变量,这个可以在不同线程间共用。
if not user32.RegisterHotKey(None, id1, 0, win32con.VK_F9): # 注册快捷键F9并判断是否成功,该热键用于执行一次需要执行的内容。 win32con.VK_F9 改这个值为想要的键即可更改热键
print ("Unable to register id"+ id1) # 返回一个错误信息
if not user32.RegisterHotKey(None, id2, 0, win32con.VK_F10): # 注册快捷键F10并判断是否成功,该热键用于结束程序,且最好这么结束,否则影响下一次注册热键。
print ("Unable to register id"+ id2)
#以下为检测热键是否被按下,并在最后释放快捷键
try:
msg = ctypes.wintypes.MSG()
while True:
if user32.GetMessageA(ctypes.byref(msg), None, 0, 0) != 0:
if msg.message == win32con.WM_HOTKEY:
if msg.wParam == id1:
RUN = True
elif msg.wParam == id2:
EXIT=True
return
user32.TranslateMessage(ctypes.byref(msg))
user32.DispatchMessageA(ctypes.byref(msg))
finally:
user32.UnregisterHotKey(None, id1)#必须得释放热键,否则下次就会注册失败,所以当程序异常退出,没有释放热键,
#那么下次很可能就没办法注册成功了,这时可以换一个热键测试
user32.UnregisterHotKey(None, id2)
hotkey = Hotkey()
hotkey.start()
1先运行程序
2.复制中文变量名
3.F9:执行翻译并把结果放到剪切板 就可以ctrl+v复制了
4.可以继续挂在后台或者 按F10:退出程序
tips:热键可以去代码中更改
代码如下(示例):
import ctypes
import ctypes.wintypes
import hashlib
import json
import os
import random
import sys
import threading
import time
import pyperclip
import requests
import win32api
import win32clipboard as w
import win32con
import win32gui
代码如下(示例):
if __name__ == '__main__':
while(True):
if RUN==True:
youdao = Youdao()
youdao.run()
RUN=False
elif EXIT==True:
#这里是用于退出循环的
sys.exit()
没啥好说的老裁缝了
这里是完整的代码 我python的版本是3.7小伙伴们ctrl c v 一下就可以用了
import ctypes
import ctypes.wintypes
import hashlib
import json
import os
import random
import sys
import threading
import time
import pyperclip
import requests
import win32api
import win32clipboard as w
import win32con
import win32gui
RUN=False #用来传递运行一次的参数
EXIT = False #用来传递退出的参数
user32 = ctypes.windll.user32 #加载user32.dll
id1=105 #注册热键的唯一id,用来区分热键
id2=106
class Hotkey(threading.Thread): #创建一个Thread.threading的扩展类
def run(self):
global EXIT #定义全局变量,这个可以在不同线程间共用。
global RUN #定义全局变量,这个可以在不同线程间共用。
if not user32.RegisterHotKey(None, id1, 0, win32con.VK_F9): # 注册快捷键F9并判断是否成功,该热键用于执行一次需要执行的内容。
print ("Unable to register id"+ id1) # 返回一个错误信息
if not user32.RegisterHotKey(None, id2, 0, win32con.VK_F10): # 注册快捷键F10并判断是否成功,该热键用于结束程序,且最好这么结束,否则影响下一次注册热键。
print ("Unable to register id"+ id2)
#以下为检测热键是否被按下,并在最后释放快捷键
try:
msg = ctypes.wintypes.MSG()
while True:
if user32.GetMessageA(ctypes.byref(msg), None, 0, 0) != 0:
if msg.message == win32con.WM_HOTKEY:
if msg.wParam == id1:
RUN = True
elif msg.wParam == id2:
EXIT=True
return
user32.TranslateMessage(ctypes.byref(msg))
user32.DispatchMessageA(ctypes.byref(msg))
finally:
user32.UnregisterHotKey(None, id1)#必须得释放热键,否则下次就会注册失败,所以当程序异常退出,没有释放热键,
#那么下次很可能就没办法注册成功了,这时可以换一个热键测试
user32.UnregisterHotKey(None, id2)
hotkey = Hotkey()
hotkey.start()
class Youdao(object):
def __init__(self):
# 要翻译的内容
self.word = gettext().decode('gbk')
self.url = 'https://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
self.headers = {
"Cookie": "[email protected]; OUTFOX_SEARCH_USER_ID_NCOO=1474258707.2598014; _ga=GA1.2.1009520071.1594950987; _ntes_nnid=e128de31dea304b779062ae8d3a3d1a4,1603424745279; JSESSIONID=aaa5npeigFJ3e-GQKnkQx; ___rl__test__cookies=1625816457871",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400",
"Referer": "https://fanyi.youdao.com/"
}
self.data = {}
def generate_post_data(self):
# 获取时间戳
r = str(int(time.time() * 1000))
# 拼接一个随机数
i = r + str(random.randint(0, 9))
# 获取sign
sign = self.md5("fanyideskweb" + self.word + i + "@6f#X3=cCuncYssPsuRUE")
self.data = {
"i": self.word,
"from": "AUTO",
"to": "AUTO",
"smartresult": "dict",
"client": "fanyideskweb",
"salt": i,
"sign": sign,
"ts": r,
"bv": "8d869977ed9730c759a83d50a1f65ed0",
"doctype": "json",
"version": "2.1",
"keyfrom": "fanyi.web",
"action": "FY_BY_REALTlME",
}
def md5(self, data):
# 1获取md5对象
md5 = hashlib.md5()
# 2添加源数据
md5.update(data.encode())
# 3得到结果
result = md5.hexdigest()
return result
def get_data(self):
response = requests.post(self.url, data=self.data, headers=self.headers)
return response.content.decode()
def parse_data(self, data):
"""数据的提取"""
data_dict = json.loads(data)
result = data_dict['translateResult'][0][0]['tgt']
return result
# print('翻译的结果是' + result)
def run(self):
pass
# 1 确定url header是
# 2 确定数据data
self.generate_post_data()
# 3发送请求
data = self.get_data()
#print(data)
# 4数据的提取
s=self.parse_data(data).title().replace(" ", "")#规范一下变量名
aa=s[0].lower()+s[1:]
pyperclip.copy(aa)
spam = pyperclip.paste()
def gettext():
w.OpenClipboard()
t = w.GetClipboardData(win32con.CF_TEXT)
w.CloseClipboard()
return t
if __name__ == '__main__':
while(True):
if RUN==True:
youdao = Youdao()
youdao.run()
RUN=False
elif EXIT==True:
#这里是用于退出循环的
sys.exit()