98 lines
2.9 KiB
Python
98 lines
2.9 KiB
Python
#-*- coding:utf-8 -*-
|
|
import json
|
|
import os
|
|
from collections import defaultdict
|
|
from ..base import *
|
|
|
|
|
|
@register([u'百词斩', u'Baicizhan'])
|
|
class Baicizhan(WebService):
|
|
|
|
bcz_download_mp3 = True
|
|
bcz_download_img = True
|
|
|
|
def __init__(self):
|
|
super(Baicizhan, self).__init__()
|
|
|
|
def _get_from_api(self):
|
|
url = u"http://mall.baicizhan.com/ws/search?w={}".format(self.quote_word)
|
|
result = {
|
|
"accent": u"",
|
|
"img": u"",
|
|
"mean_cn": u"",
|
|
"st": u"",
|
|
"sttr": u"",
|
|
"tv": u"",
|
|
"word": u"",
|
|
"df": u'',
|
|
}
|
|
try:
|
|
html = self.get_response(url, timeout=5)#urllib2.urlopen(url, timeout=5).read()
|
|
result.update(json.loads(html))
|
|
except:
|
|
pass
|
|
return self.cache_this(result)
|
|
|
|
@export('PRON')
|
|
def fld_phonetic(self):
|
|
url = u'http://baicizhan.qiniucdn.com/word_audios/{}.mp3'.format(self.quote_word)
|
|
audio_name = 'bcz_%s.mp3' % self.word
|
|
audio_name = get_hex_name(self.unique.lower(), audio_name, 'mp3')
|
|
if self.bcz_download_mp3:
|
|
if os.path.exists(audio_name) or self.download(url, audio_name, 5):
|
|
with open(audio_name, 'rb') as f:
|
|
if f.read().strip() == '{"error":"Document not found"}':
|
|
res = ''
|
|
else:
|
|
res = self.get_anki_label(audio_name, 'audio')
|
|
if not res:
|
|
os.remove(audio_name)
|
|
else:
|
|
res = ''
|
|
return res
|
|
else:
|
|
return url
|
|
|
|
@export('PHON')
|
|
def fld_phon(self):
|
|
return self._get_field('accent')
|
|
|
|
@export('IMAGE')
|
|
def fld_img(self):
|
|
url = self._get_field('img')
|
|
if url and self.bcz_download_img:
|
|
filename = url[url.rindex('/') + 1:]
|
|
if os.path.exists(filename) or self.download(url, filename):
|
|
return self.get_anki_label(filename, 'img')
|
|
#return self.get_anki_label(url, 'img')
|
|
return ''
|
|
|
|
@export([u'象形', u'Pictogram'])
|
|
def fld_df(self):
|
|
url = self._get_field('df')
|
|
if url and self.bcz_download_img:
|
|
filename = url[url.rindex('/') + 1:]
|
|
if os.path.exists(filename) or self.download(url, filename):
|
|
return self.get_anki_label(filename, 'img')
|
|
#return self.get_anki_label(url, 'img')
|
|
return ''
|
|
|
|
@export(u'DEF')
|
|
def fld_mean(self):
|
|
return self._get_field('mean_cn')
|
|
|
|
@export(u'EXAMPLE')
|
|
def fld_st(self):
|
|
return self._get_field('st')
|
|
|
|
@export('TRANS')
|
|
def fld_sttr(self):
|
|
return self._get_field('sttr')
|
|
|
|
@export([u'单词tv', u'TV'])
|
|
def fld_tv_url(self):
|
|
video = self._get_field('tv')
|
|
if video:
|
|
return self.get_anki_label(video, 'video')
|
|
return ''
|