File size: 2,760 Bytes
f36740b fa90b1d 7a05cd7 43c88a7 09af6bc 43c88a7 e6758ae 78d0ff1 43c88a7 d03a2fc cb15d3a f36740b 09af6bc f36740b 7f8aad3 78d0ff1 bddd8be 43c88a7 7f8aad3 78d0ff1 cb15d3a 43c88a7 78d0ff1 09af6bc 7f8aad3 09af6bc 9cde6b7 09af6bc 7ade3be cb15d3a 7ade3be 09af6bc f36740b cb15d3a 09af6bc 78d0ff1 09af6bc 78d0ff1 09af6bc 7ade3be f36740b cb15d3a f36740b 09af6bc 78d0ff1 09af6bc 78d0ff1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
"""
language detection API
"""
__copyright__ = "Copyright (C) 2020 Nidhal Baccouri"
from typing import List, Optional, Union
import requests
from requests.exceptions import HTTPError
# Module global config
config = {
"url": "https://ws.detectlanguage.com/0.2/detect",
"headers": {
"User-Agent": "Detect Language API Python Client 1.4.0",
"Authorization": "Bearer {}",
},
}
def get_request_body(
text: Union[str, List[str]], api_key: str, *args, **kwargs
):
"""
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: str,
api_key: Optional[str] = None,
detailed: bool = 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: List[str], api_key: str, detailed: bool = False, *args, **kwargs
):
"""
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]
|