Initial commit
commit
f1118ffe5e
|
@ -0,0 +1 @@
|
|||
__pycache__/
|
|
@ -0,0 +1,3 @@
|
|||
TRANSLATE_API_ENDPOINT_URL = "https://api-free.deepl.com/v2/translate"
|
||||
USAGE_API_ENDPOINT_URL = "https://api-free.deepl.com/v2/usage"
|
||||
API_ACCESS_KEY = ""
|
|
@ -0,0 +1,13 @@
|
|||
# 👋 Введение
|
||||
|
||||
[SelfPrivacy](https://selfprivacy.org) — мобильное [приложение](https://f-droid.org/en/packages/pro.kherel.selfprivacy/) разворачивает сервер с готовыми к использованию сервисами:
|
||||
- Электронная почта
|
||||
- Парольный менеджер
|
||||
- Мессенджер
|
||||
- VPN
|
||||
- Файловое хранилище
|
||||
- Конференции
|
||||
- ... и многие другие [сервисы](services.md)
|
||||
|
||||
## ⚠️ Beta
|
||||
Текущий релиз пока не готов к повседневному использованию неквалифицированным пользователем.
|
|
@ -0,0 +1,13 @@
|
|||
# 👋 Introduction
|
||||
|
||||
[SelfPrivacy](https://selfprivacy.org) - mobile [app](https://f-droid.org/en/packages/pro.kherel.selfprivacy/) deploys a server with ready-to-use services:
|
||||
- Email
|
||||
- Password manager
|
||||
- Messenger
|
||||
- VPN
|
||||
- File storage
|
||||
- Conferences
|
||||
- ... and many other [services](services.md)
|
||||
|
||||
## ⚠️ Beta
|
||||
The current release is not yet ready for everyday use by an unskilled user.
|
|
@ -0,0 +1,71 @@
|
|||
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()
|
|
@ -0,0 +1,3 @@
|
|||
requests
|
||||
requests_toolbelt
|
||||
argparse
|
|
@ -0,0 +1 @@
|
|||
Привет, мир!
|
|
@ -0,0 +1 @@
|
|||
Hello, world!
|
Reference in New Issue