Advertisement
Guest User

Untitled

a guest
Mar 19th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.33 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. import config
  3. import requests
  4. import json
  5.  
  6.  
  7. class YandexDict(object):
  8.     """This calss provide access to Yandex Dict REST API"""
  9.     __responses = {200: ["Операция выполнена успешно", 0],
  10.                    401: ["Неправильный API-ключ", -1],
  11.                    402: ["API-ключ заблокирован", -2],
  12.                    403: ["Превышено суточное ограничение на объем переведенного текста", -3],
  13.                    413: ["Превышен максимально допустимый размер текста", -4],
  14.                    501: ["Заданное направление перевода не поддерживается", -5]
  15.                    }
  16.  
  17.     __lookup_req = "https://dictionary.yandex.net/api/v1/dicservice.json/lookup?key={api_key}&lang={src_lang}-{dst_lang}&text={text}"
  18.  
  19.     def __init__(self, api_key, verbose=False):
  20.         super(YandexDict, self).__init__()
  21.         self.__api_key = api_key
  22.         self.verbose = verbose
  23.  
  24.     def lookup(self, text, source_lang, dest_lang):
  25.         reqest = self.__lookup_req.format(api_key=self.__api_key, text=text, src_lang=source_lang, dst_lang=dest_lang)
  26.  
  27.         try:
  28.             response = requests.get(reqest, verify=True)
  29.         except requests.RequestException as e:
  30.             print(e)
  31.             return [-7, None]
  32.  
  33.         if response.ok is False:
  34.             if self.verbose is True:
  35.                 try:
  36.                     print(self.__responses[response.status_code][0])
  37.                     return [self.__responses[response.status_code][1], None]
  38.                 except KeyError:
  39.                     print("Unexpecting status code")
  40.                     return [-8, None]
  41.             else:
  42.                 return [self.__responses[response.status_code][1], None]
  43.  
  44.         str_resp = str(response.content, 'utf-8')
  45.         # print(str_resp)
  46.         try:
  47.             json_resp = json.loads(str_resp)
  48.         except json.JSONDecodeError as e:
  49.             print(e)
  50.             return [-9, None]
  51.  
  52.         return [0, json_resp]
  53.  
  54.  
  55. # simple self tests
  56. if __name__ == '__main__':
  57.     ya_dict = YandexDict(api_key=config.yandex_dict_key, verbose=True)
  58.     print(ya_dict.lookup("hello", source_lang="en", dest_lang="ru"))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement