| """ | |
| language detection API | |
| """ | |
| import requests | |
| from deep_translator.configs import config | |
| from requests.exceptions import HTTPError | |
| def get_request_body(text, api_key, *args): | |
| """ | |
| send a request and return the response body parsed as dictionary | |
| @param text: target text that you want to detect its language | |
| @type text: str | |
| @type api_key: str | |
| @param api_key: your private API key | |
| """ | |
| if not api_key: | |
| raise Exception("you need to get an API_KEY for this to work. " | |
| "Get one for free here: https://detectlanguage.com/documentation") | |
| if not text: | |
| raise Exception("Please provide an input text") | |
| else: | |
| try: | |
| headers = config['headers'] | |
| headers['Authorization'] = headers['Authorization'].format(api_key) | |
| response = requests.post(config['url'], | |
| json={'q': text}, | |
| headers=headers) | |
| body = response.json().get('data') | |
| return body | |
| except HTTPError as e: | |
| print("Error occured while requesting from server: ", e.args) | |
| raise e | |
| def single_detection(text, api_key=None, detailed=False, *args, **kwargs): | |
| """ | |
| function responsible for detecting the language from a text | |
| @param text: target text that you want to detect its language | |
| @type text: str | |
| @type api_key: str | |
| @param api_key: your private API key | |
| @param detailed: set to True if you want to get detailed information about the detection process | |
| """ | |
| body = get_request_body(text, api_key) | |
| detections = body.get('detections') | |
| if detailed: | |
| return detections[0] | |
| lang = detections[0].get('language', None) | |
| if lang: | |
| return lang | |
| def batch_detection(text_list, api_key, detailed=False, *args): | |
| """ | |
| function responsible for detecting the language from a text | |
| @param text_list: target batch that you want to detect its language | |
| @param api_key: your private API key | |
| @param detailed: set to True if you want to get detailed information about the detection process | |
| """ | |
| body = get_request_body(text_list, api_key) | |
| detections = body.get('detections') | |
| res = [obj[0] for obj in detections] | |
| if detailed: | |
| return res | |
| else: | |
| return [obj['language'] for obj in res] | |