Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- import config
- import requests
- import json
- class YandexDict(object):
- """This calss provide access to Yandex Dict REST API"""
- __responses = {200: ["Операция выполнена успешно", 0],
- 401: ["Неправильный API-ключ", -1],
- 402: ["API-ключ заблокирован", -2],
- 403: ["Превышено суточное ограничение на объем переведенного текста", -3],
- 413: ["Превышен максимально допустимый размер текста", -4],
- 501: ["Заданное направление перевода не поддерживается", -5]
- }
- __lookup_req = "https://dictionary.yandex.net/api/v1/dicservice.json/lookup?key={api_key}&lang={src_lang}-{dst_lang}&text={text}"
- def __init__(self, api_key, verbose=False):
- super(YandexDict, self).__init__()
- self.__api_key = api_key
- self.verbose = verbose
- def lookup(self, text, source_lang, dest_lang):
- reqest = self.__lookup_req.format(api_key=self.__api_key, text=text, src_lang=source_lang, dst_lang=dest_lang)
- try:
- response = requests.get(reqest, verify=True)
- except requests.RequestException as e:
- print(e)
- return [-7, None]
- if response.ok is False:
- if self.verbose is True:
- try:
- print(self.__responses[response.status_code][0])
- return [self.__responses[response.status_code][1], None]
- except KeyError:
- print("Unexpecting status code")
- return [-8, None]
- else:
- return [self.__responses[response.status_code][1], None]
- str_resp = str(response.content, 'utf-8')
- # print(str_resp)
- try:
- json_resp = json.loads(str_resp)
- except json.JSONDecodeError as e:
- print(e)
- return [-9, None]
- return [0, json_resp]
- # simple self tests
- if __name__ == '__main__':
- ya_dict = YandexDict(api_key=config.yandex_dict_key, verbose=True)
- print(ya_dict.lookup("hello", source_lang="en", dest_lang="ru"))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement