65 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# -*- coding:utf-8 -*-
 | 
						|
import xml.etree.ElementTree
 | 
						|
from ..base import WebService, export, register, with_styles
 | 
						|
import requests
 | 
						|
import hashlib
 | 
						|
import random
 | 
						|
import json
 | 
						|
 | 
						|
 | 
						|
@register([u'百度翻译', u'Baidu-Translate'])
 | 
						|
class BaiduFy(WebService):
 | 
						|
 | 
						|
    def __init__(self):
 | 
						|
        super(BaiduFy, self).__init__()
 | 
						|
 | 
						|
    def _get_from_api(self, lang='fr'):
 | 
						|
        url = u'http://api.fanyi.baidu.com/api/trans/vip/translate'
 | 
						|
        result = {
 | 
						|
                'explains': '',
 | 
						|
            }
 | 
						|
        data = {
 | 
						|
                'q': '',
 | 
						|
                'from': 'en',
 | 
						|
                'to': 'zh',
 | 
						|
                'appid': '20190502000293467',
 | 
						|
                'salt': '',
 | 
						|
                'sign': '',
 | 
						|
            }
 | 
						|
        headers = {
 | 
						|
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063',
 | 
						|
        }
 | 
						|
        
 | 
						|
        miyao = 'QEl8tPQXtgn35Dzxubk6'
 | 
						|
        try:
 | 
						|
            data['q'] = self.word
 | 
						|
            data['salt'] = str(random.randint(0, 100))
 | 
						|
            strs = data['appid'] + data['q'] + data['salt'] + miyao
 | 
						|
            data['sign'] = hashlib.md5(strs.encode('utf-8')).hexdigest()
 | 
						|
            html = requests.post(url, data=data, headers=headers)
 | 
						|
            explains = json.loads(html.content)['trans_result'][0]['dst']
 | 
						|
            result.update({'explains': explains})
 | 
						|
        except:
 | 
						|
            pass
 | 
						|
        return self.cache_this(result)
 | 
						|
 | 
						|
    @export([u'翻译结果', 'translation'])
 | 
						|
    def fld_explains(self):
 | 
						|
        return self.cache_result('explains') if self.cached('explains') else \
 | 
						|
            self._get_from_api().get('explains', '')
 | 
						|
    @export([u'英式发音', 'uk'])
 | 
						|
    def fld_uk_audio(self):
 | 
						|
        audiourl = 'http://tts.baidu.com/text2audio?lan=uk&pid=101&ie=UTF-8&text={0}&spd=4'.format(self.quote_word)
 | 
						|
        audio = requests.get(audiourl)
 | 
						|
        name = 'bdfy_uk'+hashlib.md5(audiourl.encode('utf-8')).hexdigest()+'.mp3'
 | 
						|
        with open(name,'wb') as f:
 | 
						|
            f.write(audio.content)
 | 
						|
        return self.get_anki_label(name, 'audio')
 | 
						|
    @export([u'美式发音', 'en'])
 | 
						|
    def fld_en_audio(self):
 | 
						|
        audiourl = 'http://tts.baidu.com/text2audio?lan=en&pid=101&ie=UTF-8&text={0}&spd=4'.format(self.quote_word)
 | 
						|
        audio = requests.get(audiourl)
 | 
						|
        name = 'bdfy_en'+hashlib.md5(audiourl.encode('utf-8')).hexdigest()+'.mp3'
 | 
						|
        with open(name,'wb') as f:
 | 
						|
            f.write(audio.content)
 | 
						|
        return self.get_anki_label(name, 'audio') |