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("")  
posted @ 2023-12-23 14:15  武平宁  阅读(32)  评论(0)    收藏  举报