mirror of
https://gitlab.com/gnh1201/pylingva.git
synced 2025-12-08 23:33:28 +00:00
0.1.2 change help display, remove alternative url
This commit is contained in:
parent
d6eba3b84b
commit
387d3e0af2
31
README.md
31
README.md
|
|
@ -10,21 +10,24 @@ pip install pylingva
|
||||||
## CLI
|
## CLI
|
||||||
```shell
|
```shell
|
||||||
$ translate -h
|
$ translate -h
|
||||||
usage: translate [-h] [-s SOURCE] [-t TARGET] [-txt TEXT] [-ll] [-f FILE] [-o OUTPUT]
|
|
||||||
|
|
||||||
options:
|
██████╗ ██╗ ██╗██╗ ██╗███╗ ██╗ ██████╗ ██╗ ██╗ █████╗
|
||||||
-h, --help show this help message and exit
|
██╔══██╗╚██╗ ██╔╝██║ ██║████╗ ██║██╔════╝ ██║ ██║██╔══██╗
|
||||||
-s SOURCE, --source SOURCE
|
██████╔╝ ╚████╔╝ ██║ ██║██╔██╗ ██║██║ ███╗██║ ██║███████║
|
||||||
Source Language to translate
|
██╔═══╝ ╚██╔╝ ██║ ██║██║╚██╗██║██║ ██║╚██╗ ██╔╝██╔══██║
|
||||||
-t TARGET, --target TARGET
|
██║ ██║ ███████╗██║██║ ╚████║╚██████╔╝ ╚████╔╝ ██║ ██║
|
||||||
Target Language to translate
|
╚═╝ ╚═╝ ╚══════╝╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚═══╝ ╚═╝ ╚═╝
|
||||||
-txt TEXT, --text TEXT
|
Simple translator tool.
|
||||||
Text to translate
|
|
||||||
-ll, --list-languages
|
|
||||||
List Languages support
|
Options:
|
||||||
-f FILE, --file FILE Path file .txt to translate
|
-h, --help Display this message
|
||||||
-o OUTPUT, --output OUTPUT
|
-s, --source Source Language to translate
|
||||||
Output file translation result
|
-t, --target Target Language to translate
|
||||||
|
-txt, --text Text to translate
|
||||||
|
-ll, --list-languages List Languages support
|
||||||
|
-f, --file Path file .txt to translate
|
||||||
|
-o, --output Output file translation result
|
||||||
|
|
||||||
$ translate -s auto -t id -txt "How are You ?"
|
$ translate -s auto -t id -txt "How are You ?"
|
||||||
Apa kabar ?
|
Apa kabar ?
|
||||||
|
|
|
||||||
67
pylingva/arg.py
Normal file
67
pylingva/arg.py
Normal file
|
|
@ -0,0 +1,67 @@
|
||||||
|
#! /usr/bin/env python
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import argparse, textwrap
|
||||||
|
|
||||||
|
class ArgumentParser(argparse.ArgumentParser):
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(ArgumentParser, self).__init__(*args, **kwargs)
|
||||||
|
self.program = { key: kwargs[key] for key in kwargs }
|
||||||
|
self.options = []
|
||||||
|
|
||||||
|
def add_argument(self, *args, **kwargs):
|
||||||
|
super(ArgumentParser, self).add_argument(*args, **kwargs)
|
||||||
|
option = {}
|
||||||
|
option["flags"] = [ item for item in args ]
|
||||||
|
for key in kwargs:
|
||||||
|
option[key] = kwargs[key]
|
||||||
|
self.options.append(option)
|
||||||
|
|
||||||
|
def print_help(self):
|
||||||
|
wrapper = textwrap.TextWrapper(width=80)
|
||||||
|
|
||||||
|
# Print usage
|
||||||
|
# if "usage" in self.program:
|
||||||
|
# print("Usage: %s" % self.program["usage"])
|
||||||
|
# else:
|
||||||
|
# usage = []
|
||||||
|
# for option in self.options:
|
||||||
|
# usage += [ "[%s %s]" % (item, option["metavar"]) if "metavar" in option else "[%s %s]" % (item, option["dest"].upper()) if "dest" in option else "[%s]" % item for item in option["flags"] ]
|
||||||
|
# wrapper.initial_indent = "Usage: %s " % os.path.basename(sys.argv[0])
|
||||||
|
# wrapper.subsequent_indent = len(wrapper.initial_indent) * " "
|
||||||
|
# output = str.join(" ", usage)
|
||||||
|
# output = wrapper.fill(output)
|
||||||
|
# print(output)
|
||||||
|
# print()
|
||||||
|
|
||||||
|
# Print description
|
||||||
|
if "description" in self.program:
|
||||||
|
print(self.program["description"])
|
||||||
|
print()
|
||||||
|
|
||||||
|
# Print options
|
||||||
|
print("Options:")
|
||||||
|
maxlen = 0
|
||||||
|
for option in self.options:
|
||||||
|
option["flags2"] = str.join(", ", [ "%s %s" % (item, option["metavar"]) if "metavar" in option else "%s %s" % (item, option["dest"].upper()) if "dest" in option else item for item in option["flags"] ])
|
||||||
|
if len(option["flags2"]) > maxlen:
|
||||||
|
maxlen = len(option["flags2"])
|
||||||
|
for option in self.options:
|
||||||
|
template = " %-" + str(maxlen) + "s "
|
||||||
|
wrapper.initial_indent = template % option["flags2"]
|
||||||
|
wrapper.subsequent_indent = len(wrapper.initial_indent) * " "
|
||||||
|
if "help" in option and "default" in option:
|
||||||
|
output = option["help"]
|
||||||
|
output += " (default: '%s')" % option["default"] if isinstance(option["default"], str) else " (default: %s)" % str(option["default"])
|
||||||
|
output = wrapper.fill(output)
|
||||||
|
elif "help" in option:
|
||||||
|
output = option["help"]
|
||||||
|
output = wrapper.fill(output)
|
||||||
|
elif "default" in option:
|
||||||
|
output = "Default: '%s'" % option["default"] if isinstance(option["default"], str) else "Default: %s" % str(option["default"])
|
||||||
|
output = wrapper.fill(output)
|
||||||
|
else:
|
||||||
|
output = wrapper.initial_indent
|
||||||
|
print(output)
|
||||||
|
|
@ -1,10 +1,20 @@
|
||||||
#! /usr/bin/env python
|
#! /usr/bin/env python
|
||||||
|
|
||||||
|
from pylingva.arg import ArgumentParser
|
||||||
from pylingva import pylingva
|
from pylingva import pylingva
|
||||||
import argparse
|
|
||||||
|
|
||||||
|
desc = """
|
||||||
|
██████╗ ██╗ ██╗██╗ ██╗███╗ ██╗ ██████╗ ██╗ ██╗ █████╗
|
||||||
|
██╔══██╗╚██╗ ██╔╝██║ ██║████╗ ██║██╔════╝ ██║ ██║██╔══██╗
|
||||||
|
██████╔╝ ╚████╔╝ ██║ ██║██╔██╗ ██║██║ ███╗██║ ██║███████║
|
||||||
|
██╔═══╝ ╚██╔╝ ██║ ██║██║╚██╗██║██║ ██║╚██╗ ██╔╝██╔══██║
|
||||||
|
██║ ██║ ███████╗██║██║ ╚████║╚██████╔╝ ╚████╔╝ ██║ ██║
|
||||||
|
╚═╝ ╚═╝ ╚══════╝╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚═══╝ ╚═╝ ╚═╝
|
||||||
|
Simple translator tool.
|
||||||
|
"""
|
||||||
def translate():
|
def translate():
|
||||||
arg = argparse.ArgumentParser()
|
arg = ArgumentParser(description=desc, allow_abbrev=False, add_help=False)
|
||||||
|
arg.add_argument("-h", "--help", action="help", help="Display this message")
|
||||||
arg.add_argument("-s", "--source", type=str, help="Source Language to translate")
|
arg.add_argument("-s", "--source", type=str, help="Source Language to translate")
|
||||||
arg.add_argument("-t", "--target", type=str, help="Target Language to translate")
|
arg.add_argument("-t", "--target", type=str, help="Target Language to translate")
|
||||||
arg.add_argument("-txt", "--text", type=str, help="Text to translate")
|
arg.add_argument("-txt", "--text", type=str, help="Text to translate")
|
||||||
|
|
|
||||||
|
|
@ -5,38 +5,36 @@ import requests as req
|
||||||
class pylingva:
|
class pylingva:
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.url_list = ("https://lingva.ml", "https://translate.alefvanoon.xyz", "https://translate.igna.rocks", "https://lingva.pussthecat.org")
|
url = "https://lingva.ml"
|
||||||
for url in self.url_list:
|
try:
|
||||||
check_url = req.get(url)
|
check_url = req.get(url)
|
||||||
status = check_url.status_code
|
check_url.raise_for_status()
|
||||||
if status == 200:
|
self.url = url + "/api/v1/"
|
||||||
self.url = url + "/api/v1/"
|
except req.exceptions.RequestException as er:
|
||||||
break
|
print(er)
|
||||||
else:
|
exit()
|
||||||
self.url = 0
|
except req.exceptions.ConnectionError as er:
|
||||||
|
print(er)
|
||||||
|
exit()
|
||||||
|
except req.exceptions.Timeout as er:
|
||||||
|
print(er)
|
||||||
|
exit()
|
||||||
|
|
||||||
def languages(self):
|
def languages(self):
|
||||||
if self.url == 0:
|
url = self.url + "languages"
|
||||||
print("Server Down !")
|
all_languages = req.get(url)
|
||||||
else:
|
all_languages = all_languages.json()
|
||||||
url = self.url + "languages"
|
lang = {}
|
||||||
all_languages = req.get(url)
|
for x in range(0, len(all_languages['languages'])):
|
||||||
all_languages = all_languages.json()
|
list_code = all_languages['languages'][x]['code']
|
||||||
lang = {}
|
list_name = all_languages['languages'][x]['name']
|
||||||
for x in range(0, len(all_languages['languages'])):
|
lang.update({list_name: list_code})
|
||||||
list_code = all_languages['languages'][x]['code']
|
return lang
|
||||||
list_name = all_languages['languages'][x]['name']
|
|
||||||
lang.update({list_name: list_code})
|
|
||||||
return lang
|
|
||||||
|
|
||||||
def translate(self, source, target, text):
|
def translate(self, source, target, text):
|
||||||
if self.url == 0:
|
url = f"{self.url}/{source}/{target}/{text}"
|
||||||
print("Server Down !")
|
url = url.replace("?", "%3F")
|
||||||
else:
|
r = req.get(url)
|
||||||
url = f"{self.url}/{source}/{target}/{text}"
|
r = r.json()
|
||||||
url = url.replace("?", "%3F")
|
result = r['translation']
|
||||||
r = req.get(url)
|
return result
|
||||||
r = r.json()
|
|
||||||
result = r['translation']
|
|
||||||
return result
|
|
||||||
|
|
||||||
|
|
|
||||||
2
setup.py
2
setup.py
|
|
@ -7,7 +7,7 @@ with open("README.md", "r") as des:
|
||||||
setup(
|
setup(
|
||||||
name='pylingva',
|
name='pylingva',
|
||||||
packages=find_packages(),
|
packages=find_packages(),
|
||||||
version='0.1.1',
|
version='0.1.2',
|
||||||
entry_points={'console_scripts': ['translate = pylingva.cli:translate']},
|
entry_points={'console_scripts': ['translate = pylingva.cli:translate']},
|
||||||
description='Simple translator using Lingva Translate API',
|
description='Simple translator using Lingva Translate API',
|
||||||
url='https://gitlab.com/nesstero/pylingva',
|
url='https://gitlab.com/nesstero/pylingva',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user