調用有道翻譯接口翻譯輸入的文字

本文代碼是從別處看到,覺得以後會有用,然後貼在這裏,感謝作者

代碼不是很複雜,就是對接口的一系列配置傳參,實現自動翻譯

import requests
import time
import random
import hashlib
import json
 
 
class YouDao:
    def __init__(self, word):
        self.word = word
        self.formdata = None
        self.url = 'https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36 Edg/94.0.992.50',
            'Referer': 'https://fanyi.youdao.com/',
            'cookie': '_ntes_nnid=b2bd3183b80a536b5e23a0517a0dbe09,1609301940731; OUTFOX_SEARCH_USER_ID_NCOO=96820041.49293956; OUTFOX_SEARCH_USER_ID="[email protected]"; JSESSIONID=aaa5u4ALZhnHhcfnoUsYx; ___rl__test__cookies=1634549585488'
        }
 
    def translation(self):
        self.config()
        response = requests.post(self.url, self.formdata, headers=self.headers)
        response.encoding = 'utf-8'
        try:
            data = json.loads(response.text)
            rdata = data['translateResult'][0][0]['tgt']
        except:
            rdata = 'error'
        return rdata
 
    def config(self):
        '''
        用於配置發送數據formdata
        '''
 
        ts = str(int(time.time() * 1000))
        i = ts + str(random.randint(0, 9))
        salt = i
        str_ = 'fanyideskweb' + self.word + i + "Y2FYu%TNSbMCxc3t2u^XT"
        md5 = hashlib.md5()
        md5.update(str_.encode('utf-8'))
        sign = md5.hexdigest()
        self.formdata = {
            'i': self.word,
            'from': 'AUTO',
            'to': 'AUTO',
            'smartresult': 'dict',
            'client': 'fanyideskweb',
            'salt': salt,
            'sign': sign,
            'lts': ts,
            'bv': '8f307b78e0cf5a0a41f77f2f8d464fe3',
            'doctype': 'json',
            'version': '2.1',
            'keyfrom': 'fanyi.web',
            'action': 'FY_BY_REALTlME'
        }
 
 
if __name__ == '__main__':
    word = input('請輸入要翻譯的內容:')
    youdao = YouDao(word)
    print(youdao.translation())

 

執行腳本

 

 本案例有一點值得借鑑,對於輸入後返回結果的腳本,可採用本案例的代碼書寫方式標準化,簡單清晰明瞭

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章