You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

71 lines
2.1 KiB

import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder
import json
import argparse
import os
import constants
def main():
# Impl
print("[INFO][PREFLIGHT] Initializing translator...")
argumentParser = argparse.ArgumentParser(description="Translate text using Deepl service")
argumentParser.add_argument(
"--file",
help="File, that contains text to translate",
type=str
)
argumentParser.add_argument(
"--output",
help="File, that translation will be written to(specify /dev/stdout for output into console)",
type=str
)
arguments = argumentParser.parse_args()
if not os.path.exists(arguments.file):
print("[ERROR][PREFLIGHT] File {0} not found!".format(arguments.file))
exit(1)
elif os.path.exists(arguments.file):
readOnlyFileDescriptor = open(arguments.file, "r")
fileContent = readOnlyFileDescriptor.read()
params = {
"auth_key": constants.API_ACCESS_KEY,
}
print("[INFO][PREFLIGHT] Performing subscription check...", end="")
usageMonitoringRequest = requests.get(constants.USAGE_API_ENDPOINT_URL, data=params)
responseInJSON = json.loads(str(usageMonitoringRequest.text))
availableCharacters = int(responseInJSON["character_limit"])
if len(fileContent) > availableCharacters:
print("[ERROR][PREFLIGHT] Amount of characters in the text file exceeds available!")
readOnlyFileDescriptor.close()
exit(1)
elif len(fileContent) <= availableCharacters:
print("done")
params = {
"auth_key": constants.API_ACCESS_KEY,
"text": fileContent,
"target_lang": "EN"
}
translationRequest = requests.get(constants.TRANSLATE_API_ENDPOINT_URL, data=params)
responseInJSON = json.loads(str(translationRequest.text))
translation = responseInJSON["translations"][0]["text"]
readWriteFileDescriptor = open(arguments.output, "w")
readWriteFileDescriptor.write(translation)
readOnlyFileDescriptor.close()
readWriteFileDescriptor.close()
main()