#-*- coding:utf-8 -*-
import os
import xml.etree.ElementTree
from ..base import *
js = '''
var initVoice = function () {
    var player = document.getElementById('dictVoice');
    document.addEventListener('click', function (e) {
        var target = e.target;
        if (target.hasAttribute('role') && target.getAttribute('role').indexOf('dict_audio_js') >= 0) {
            var url = target.getAttribute('data-rel');
            player.setAttribute('src', url);
            player.volume = 1;
            player.play();
            e.preventDefault();
        }
    }, false);
};
initVoice();
'''
youdao_download_mp3 = True
@register([u'有道词典-英汉', u'Youdao'])
class Youdao(WebService):
    def __init__(self):
        super(Youdao, self).__init__()
    def _get_from_api(self, lang='eng'):
        url = (u'http://dict.youdao.com/fsearch?client=deskdict'
                    '&keyfrom=chrome.extension&pos=-1'
                    '&doctype=xml&xmlVersion=3.2'
                    '&dogVersion=1.0&vendor=unknown'
                    '&appVer=3.1.17.4208'
                    '&le={0}&q={1}').format(lang, self.quote_word)
        result ={
            'phonetic': '',
            'explains':'',
        }
        try:
            html = self.get_response(url, timeout=5)
            doc = xml.etree.ElementTree.fromstring(html)
            # fetch symbols
            symbol, uk_symbol, us_symbol = doc.findtext(".//phonetic-symbol"), doc.findtext(
                ".//uk-phonetic-symbol"), doc.findtext(".//us-phonetic-symbol")
            if uk_symbol and us_symbol:
                #phonetics = 'UK [%s]   US [%s]' % (uk_symbol, us_symbol)
                phonetics = '/%s/' % (us_symbol)
            elif symbol:
                phonetics = '/%s/' % symbol
            else:
                phonetics = ''
            # fetch explanations
            explains = '
'.join([node.text
                                    for node in doc.findall(
                                        ".//custom-translation/translation/content"
                                    )])
            result.update({'phonetic': phonetics, 'explains': explains})
        except:
            pass
        return self.cache_this(result)
    @export(u'音标')
    def fld_phonetic(self):
        return self._get_field('phonetic')
    @export(u'基本释义')
    def fld_explains(self):
        return self._get_field('explains')
    @with_styles(cssfile='_youdao.css', js=js, need_wrap_css=True, wrap_class='youdao')
    def _get_singledict(self, single_dict, lang='eng'):
        url = u"http://m.youdao.com/singledict?q={0}&dict={1}&le={2}&more=false".format(
            self.quote_word,
            single_dict,
            lang
        )
        try:
            result = self.get_response(url, timeout=5)
            return (u'