# -*- coding: utf-8 -*-

import requests
import random
import json
from hashlib import md5


class BaiduTranslator:
    def __init__(self, appid, appkey):
        self.appid = appid
        self.appkey = appkey
        self.endpoint = 'http://api.fanyi.baidu.com'
        self.path = '/api/trans/vip/translate'
        self.url = self.endpoint + self.path

    @staticmethod
    def make_md5(s, encoding='utf-8'):
        return md5(s.encode(encoding)).hexdigest()

    def translate(self, query, from_lang='en', to_lang='zh'):
        salt = random.randint(32768, 65536)
        sign = self.make_md5(self.appid + query + str(salt) + self.appkey)
        headers = {'Content-Type': 'application/x-www-form-urlencoded'}
        payload = {'appid': self.appid, 'q': query, 'from': from_lang, 'to': to_lang, 'salt': salt, 'sign': sign}
        r = requests.post(self.url, params=payload, headers=headers)
        result = r.json()
        return result

    def get_translation(self, query, from_lang='en', to_lang='zh'):
        result = self.translate(query, from_lang, to_lang)
        translations = [item['dst'] for item in result.get('trans_result', [])]
        return translations

# translator = BaiduTranslator(appid='', appkey='')
# query = 'Hello World! This is 1st paragraph.\nThis is 2nd paragraph.'
# translations = translator.get_translation(query, from_lang='en', to_lang='zh')
# print(translations)
# http://api.fanyi.baidu.com/product/113