Linux: 自己动手写个命令行翻译程序
脚本
#!/usr/bin/python3
import sys
import requests
import json
from termcolor import colored
url = 'https://fanyi.baidu.com/sug'
data = {'kw': sys.argv[1]}
res = requests.post(url, data=data).json()
print("")
for i in range(len(res['data'])):
key = res['data'][i]['k']
value = res['data'][i]['v']
print(f"-> {colored(key, attrs=['bold'])}: {colored(value, 'cyan', attrs=['bold'])}")
print("")
使用示例

脚本优化
#!/usr/bin/python3
import sys
import requests
from termcolor import colored
import json
url = 'https://fanyi.baidu.com/sug'
def translate():
while True:
keyword = input(":) ").strip()
if keyword == "":
continue
data = {'kw': keyword}
res = requests.post(url, data=data).json()
print("")
for i in range(len(res['data'])):
key = res['data'][i]['k']
value = res['data'][i]['v']
print(f"-> {colored(key, attrs=['bold'])}: {colored(value, 'cyan', attrs=['bold'])}")
print("")
if __name__ == '__main__':
if len(sys.argv) < 2 :
translate()
else:
data = {'kw': sys.argv[1]}
res = requests.post(url, data=data).json()
print("")
for i in range(len(res['data'])):
key = res['data'][i]['k']
value = res['data'][i]['v']
print(f"-> {colored(key, attrs=['bold'])}: {colored(value, 'cyan', attrs=['bold'])}")
print("")
使用示例

再优化
支持键盘上下按键,支持ctrl-c退出程序
#!/usr/bin/python3
import sys
import requests
from termcolor import colored
import json
import readline
import signal
readline.parse_and_bind("tab: complete")
url = 'https://fanyi.baidu.com/sug'
def translate():
while True:
# 接收输入,并支持空格输入
keyword = input(":) ").strip()
# 支持回车
if keyword == "":
continue
# 增加键盘上下键选择
if readline.get_history_length() > 1:
prev_input = readline.get_history_item(readline.get_history_length() - 2)
prev_input[-1]
# 主逻辑,请求单词翻译
data = {'kw': keyword}
res = requests.post(url, data=data).json()
# 打印处理
print("")
for i in range(len(res['data'])):
key = res['data'][i]['k']
value = res['data'][i]['v']
print(f"-> {colored(key, attrs=['bold'])}: {colored(value, 'cyan', attrs=['bold'])}")
print("")
def signal_handler(signal, frame):
print("\n接收到 Ctrl+C 信号,正在退出程序...")
# 在这里执行清理操作
sys.exit(0)
if __name__ == '__main__':
# 支持crtl-c退出
signal.signal(signal.SIGINT, signal_handler)
if len(sys.argv) < 2 :
# 支持交互式
translate()
else:
# 支持直接传递参数
data = {'kw': sys.argv[1]}
res = requests.post(url, data=data).json()
print("")
for i in range(len(res['data'])):
key = res['data'][i]['k']
value = res['data'][i]['v']
print(f"-> {colored(key, attrs=['bold'])}: {colored(value, 'cyan', attrs=['bold'])}")
print("")

浙公网安备 33010602011771号