mirror of
https://git.selfprivacy.org/SelfPrivacy/docs.selfprivacy.org.git
synced 2024-11-10 15:03:11 +00:00
71 lines
2.1 KiB
Python
71 lines
2.1 KiB
Python
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() |