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()