Как импортировать словарь в Lingualeo при помощи Python?







- Приложения для смартфонов или браузера.
- Добавление слов непосредственно на сайте.
У обеих способов есть недостатки – мы можем вносить слова лишь по одному. Нам же нужно так, чтобы за раз можно было добавить несколько слов.
Надежные и качественные трубы ПВХ
Пластиковые трубы используются для прокладки трубопроводов самого разного назначения. Это целая категория продуктов, пользующаяся большим спросом, чтобы узнать о них подробнее посетите веб-сайт ENEXT.ua. ПВХ трубы обладают массой преимуществ по сравнению с аналогами из стали, поэтому и стали более распространенными, кроме того, при превосходных характеристиках они имеют достаточно низкую стоимость.
А API есть?
Оказалось, что данный сервис не предоставляет официального API. Однако, имеется расширение для браузера, соответственно мы можем поискать внутренний api. Итак, установим расширение для браузера, в нашем случае это будет Chrome. Заходим в папку расширение и находим там файл config.js, там и будут пути к API. Нам нужны из них только 3:
- /api/login
- /gettranslates
- /addword
Писать будем на Python, поскольку установить его можно практически на любую ОС. Возьмем модули, не требующие дополнительной установки. Реализуем решение, чтобы настроить работу с api.
Service.py
import urllib
import urllib2
import json
from cookielib import CookieJar
class Lingualeo:
def __init__(self, email, password):
self.email = email
self.password = password
self.cj = CookieJar()
def auth(self):
url = "http://api.lingualeo.com/api/login"
values = {
"email": self.email,
"password": self.password
}
return self.get_content(url, values)
def add_word(self, word, tword, context):
url = "http://api.lingualeo.com/addword"
values = {
"word": word,
"tword": tword,
"context": context,
}
self.get_content(url, values)
def get_translates(self, word):
url = "http://api.lingualeo.com/gettranslates?word=" + urllib.quote_plus(word)
try:
result = self.get_content(url, {})
translate = result["translate"][0]
return {
"is_exist": translate["is_user"],
"word": word,
"tword": translate["value"].encode("utf-8")
}
except Exception as e:
return e.message
def get_content(self, url, values):
data = urllib.urlencode(values)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cj))
req = opener.open(url, data)
return json.loads(req.read())
Сначала решение было рассчитано только на текстовые файлы. Каждому слову – новая строка. Однако, затем было решено добавить реализацию для Kindle, поскольку периодически с него также нужно забирать слова.
Handler.py
class Word:
text = '';
context = '';
def __init__(self, text):
self.text = text
class Base(object):
data = []
def __init__(self, source):
self.source = source
def get(self):
return self.data
def read(self):
raise NotImplementedError('Not implemented yet')
class Kindle(Base):
def read(self):
conn = sqlite3.connect(self.source)
sql = 'select word, usage from words LEFT JOIN LOOKUPS ON words.id = LOOKUPS.word_key where words.lang="en" GROUP BY word ORDER BY word;'
for row in conn.execute(sql):
if isinstance(row[0], unicode):
word = Word(row[0])
if isinstance(row[1], unicode):
word.context = row[1]
self.data.append(word)
conn.close()
class Text(Base):
def read(self):
f = open(self.source)
for word in f.readlines():
self.data.append(Word(word))
f.close()
А теперь реализация непосредственно скрипта, который будет экспортировать/импортировать слова:
Export.py
import handler
import config
import service
import sys
email = config.auth.get('email')
password = config.auth.get('password')
export_type = sys.argv[1]
if export_type == 'text':
word_handler = handler.Text(config.sources.get('text'))
elif export_type == 'kindle':
word_handler = handler.Kindle(config.sources.get('kindle'))
else:
raise Exception('unsupported type')
word_handler.read()
lingualeo = service.Lingualeo(email, password)
lingualeo.auth()
for word_dto in word_handler.get():
word = word_dto.text.lower().encode('utf-8')
translate = lingualeo.get_translates(word)
if translate["is_exist"]:
print "Already exists: " + word.strip()
else:
context = word_dto.context.encode('utf-8')
lingualeo.add_word(word, translate["tword"], context)
print "Add word: " + word.strip()
Запуск и установка
Код есть на github, при необходимости скачете его оттуда. Нужно создать файл config.py из config.py.dist. Теперь пропишем путь к файлу со словами. Если нужно под Kindle, то к базе sqlite внутри kindle.
python export.py text #Для текстовых файлов
python export.py kindle #Для kindle
- Онлайн казино Вулкан: ассортимент игр и преимущества
- Вулкан 777 – яркие развлечения в официальном клубе
- Jet Casino в Украине: выбор развлечений, регистрация
- Ставки на спорт: как стать успешным беттором
- Игровой клуб Азино 777 предоставляет своим клиентам доступ к большой коллекции современных видео игр
- Самые популярные автоматы среди всех азартных игр онлайн-казино
- Клуб онлайн Платинум Вулкан, бесплатные игровые автоматы
Где ссылка на гит?!
Купить вечные ссылки для продвижения сайта трастовые обратные ссылки. Купить вечные ссылки для продвижения сайта трастовые обратные ссылки не хватает. И нужно время на создание новых сайтов, поскольку нам нужен постоянный и устойчивый маркетинг и бренд. Нам нужен постоянный рынок. https://seobomba.ru/
Сбербанк в Москве — адреса отделений и банкоматов, телефоны и режим работы офисов