diff --git a/addons/fastwq/service/dict/ludwig.py b/addons/fastwq/service/dict/ludwig.py
new file mode 100644
index 0000000..9b16f6f
--- /dev/null
+++ b/addons/fastwq/service/dict/ludwig.py
@@ -0,0 +1,49 @@
+#-*- coding:utf-8 -*-
+import random
+from ..base import *
+
+oxford_download_mp3 = True
+
+@register(u'Ludwig')
+class Ludwig(WebService):
+
+ def __init__(self):
+ super(Ludwig, self).__init__()
+
+ def _get_from_api(self):
+ data = self.get_response(u'https://ludwig.guru/s/{}'.format(self.quote_word))
+ soup = parse_html(data)
+ result = {
+ 'examples': []
+ }
+
+ e_list = soup.find_all('p', class_='-id-__exact--SVDfq')
+ if e_list:
+ e_arr = []
+ for n in e_list:
+ e_arr.append(str(n.get_text()).decode('utf-8'))
+ result['examples'] = e_arr
+ return self.cache_this(result)
+
+ @export('EXAMPLE')
+ def fld_example(self):
+ return self._range_examples([i for i in range(0, 100)])
+
+ @export([u'随机例句', u'Random example'])
+ def fld_random_example(self):
+ return self._range_examples()
+
+ @export([u'首2个例句', u'First 2 examples'])
+ def fld_first2_example(self):
+ return self._range_examples([0, 1])
+
+ def _range_examples(self, range_arr=None):
+ maps = self._get_field('examples')
+ if maps:
+ range_arr = range_arr if range_arr else [random.randrange(0, len(maps) - 1, 1)]
+ my_str = u''
+ for i,n in enumerate(maps):
+ if i in range_arr:
+ my_str += u'
{}'.format(n)
+ return u''.format(my_str)
+ return u''
diff --git a/addons21/fastwq/service/dict/ludwig.py b/addons21/fastwq/service/dict/ludwig.py
new file mode 100644
index 0000000..8081f4a
--- /dev/null
+++ b/addons21/fastwq/service/dict/ludwig.py
@@ -0,0 +1,49 @@
+#-*- coding:utf-8 -*-
+import random
+from ..base import *
+
+oxford_download_mp3 = True
+
+@register(u'Ludwig')
+class Ludwig(WebService):
+
+ def __init__(self):
+ super(Ludwig, self).__init__()
+
+ def _get_from_api(self):
+ data = self.get_response(u'https://ludwig.guru/s/{}'.format(self.quote_word))
+ soup = parse_html(data)
+ result = {
+ 'examples': []
+ }
+
+ e_list = soup.find_all('p', class_='-id-__exact--SVDfq')
+ if e_list:
+ e_arr = []
+ for n in e_list:
+ e_arr.append(str(n.get_text()))
+ result['examples'] = e_arr
+ return self.cache_this(result)
+
+ @export('EXAMPLE')
+ def fld_example(self):
+ return self._range_examples([i for i in range(0, 100)])
+
+ @export([u'随机例句', u'Random example'])
+ def fld_random_example(self):
+ return self._range_examples()
+
+ @export([u'首2个例句', u'First 2 examples'])
+ def fld_first2_example(self):
+ return self._range_examples([0, 1])
+
+ def _range_examples(self, range_arr=None):
+ maps = self._get_field('examples')
+ if maps:
+ range_arr = range_arr if range_arr else [random.randrange(0, len(maps) - 1, 1)]
+ my_str = u''
+ for i,n in enumerate(maps):
+ if i in range_arr:
+ my_str += u'{}'.format(n)
+ return u''.format(my_str)
+ return u''