Как импортировать словарь в Lingualeo при помощи Python?
Примеры Python » Взаимодействие с Интернетом » Python для начинающих python api, python api framework, python c api
- Приложения для смартфонов или браузера.
- Добавление слов непосредственно на сайте.
У обеих способов есть недостатки – мы можем вносить слова лишь по одному. Нам же нужно так, чтобы за раз можно было добавить несколько слов.
Надежные и качественные трубы ПВХ
Пластиковые трубы используются для прокладки трубопроводов самого разного назначения. Это целая категория продуктов, пользующаяся большим спросом, чтобы узнать о них подробнее посетите веб-сайт 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
- DELL OptiPlex 7760 — оптимальный выбор для программистов
- Как работают функции в Python?
- Онлайн-казино Vulkan Prestige одно из лучших мест для развлечений и прибыли
- Вложение декораторов в Python
- Казино Лев. Играем в новые слоты через зеркало
- Лучшие онлайн-казино: регистрируйтесь только в проверенных местах
- Как найти работу в Златоусте?
Где ссылка на гит?!
Купить вечные ссылки для продвижения сайта трастовые обратные ссылки. Купить вечные ссылки для продвижения сайта трастовые обратные ссылки не хватает. И нужно время на создание новых сайтов, поскольку нам нужен постоянный и устойчивый маркетинг и бренд. Нам нужен постоянный рынок. https://seobomba.ru/
Сбербанк в Москве — адреса отделений и банкоматов, телефоны и режим работы офисов