# -*- coding:utf-8 -*-
import os
from ..base import *
yahoo_download_mp3 = True
@register([u'雅虎奇摩字典', u'Yahoo-Dict'])
class Yahoo_Dict(WebService):
    def __init__(self):
        super(Yahoo_Dict, self).__init__()
    def _get_from_api(self):
        url = u"https://tw.dictionary.search.yahoo.com/search?p={}".format(
            self.quote_word)
        html = self.get_response(url, timeout=10)
        soup = parse_html(html)
        result = {
            'phon': '',
            'def': '',
            'audio_url': '',
            'detail': '',
        }
        # 基本
        element = soup.find('div', class_='dd cardDesign dictionaryWordCard sys_dict_word_card')
        if element:
            # 音标
            tag = element.find('div', class_='compList ml-25 d-ib')
            if tag:
                result['phon'] = tag.get_text()
            # 发音
            result['audio_url'] = u'https://s.yimg.com/bg/dict/dreye/live/f/{}.mp3'.format(
                self.word)
            # 词性及中文解释
            tag = element.find('div', class_='compList mb-25 ml-25 p-rel')
            if tag:
                result['def'] = u'
' + \
                    str(tag.find('ul')) + u'
'
        # 释义
        tag = soup.find('div', class_='grp grp-tab-content-explanation tabsContent tab-content-explanation tabActived')
        if tag:
            result['detail'] = u'' + \
                str(tag.find('ul')) + u'
'
        
        return self.cache_this(result)
    @with_styles(need_wrap_css=True, cssfile='_yahoo.css')
    def _css(self, val):
        return val
    @export(u'音标')
    def fld_pinyin(self):
        return self._get_field('phon')
    @export(u'发音')
    def fld_pron(self):
        audio_url = self._get_field('audio_url')
        if yahoo_download_mp3 and audio_url:
            filename = get_hex_name(self.unique.lower(), audio_url, 'mp3')
            if os.path.exists(filename) or self.download(audio_url, filename, 5):
                return self.get_anki_label(filename, 'audio')
        return ''
    @export(u'中文释义')
    def fld_basic(self):
        val = self._get_field('def')
        if val is None or val == '':
            return ''
        return self._css(val)
    @export(u'详细释义')
    def fld_detail(self):
        val = self._get_field('detail')
        if val is None or val == '':
            return ''
        return self._css(val)