104 lines
2.3 KiB
Python
104 lines
2.3 KiB
Python
#!/usr/bin/python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import traceback
|
|
from atexit import register as atexit_register
|
|
from json import dumps
|
|
from os import makedirs, path
|
|
from shutil import rmtree
|
|
from sys import exit, stderr
|
|
|
|
try:
|
|
from loguru import logger
|
|
catch = logger.catch
|
|
except ImportError:
|
|
def catch(x):
|
|
print('Setup in progress?')
|
|
|
|
try:
|
|
from .cli import Cli
|
|
from .cli.args import get_cli_arguments
|
|
from .fs import get_temp_path, get_info
|
|
from .info import Info
|
|
from .meta import __version__
|
|
except ImportError:
|
|
print('Setup in progress?', file=stderr)
|
|
|
|
__author__ = 'Sergey Zharkov'
|
|
__license__ = 'MIT'
|
|
__email__ = 'sttv-pc@mail.ru'
|
|
|
|
|
|
@atexit_register
|
|
def before_shutdown():
|
|
temp_dir = get_temp_path()
|
|
path.isdir(temp_dir) and rmtree(temp_dir)
|
|
|
|
|
|
def _init_cli(args, _info):
|
|
error_lvl = -5
|
|
try:
|
|
_info.start()
|
|
cli_mode = Cli(args, _info)
|
|
cli_mode.start()
|
|
code = 0
|
|
except Exception as e:
|
|
traceback.print_tb(e.__traceback__, error_lvl, file=stderr)
|
|
code = 1
|
|
_info.set_error(e)
|
|
return code
|
|
|
|
|
|
def _run_util(args) -> tuple:
|
|
parse_args = args.parse_args()
|
|
_info = Info(parse_args)
|
|
code = _init_cli(args, _info)
|
|
|
|
if parse_args.print_json:
|
|
_info = dumps(
|
|
_info.get(),
|
|
indent=2,
|
|
separators=(',', ': '),
|
|
sort_keys=True,
|
|
)
|
|
else:
|
|
_info = []
|
|
|
|
return code, _info
|
|
|
|
|
|
def _update_all(args):
|
|
parse_args = args.parse_args()
|
|
parse_args.quiet or print('Update all', file=stderr)
|
|
multi_info = {}
|
|
|
|
dst = parse_args.destination
|
|
json_info = get_info(dst)
|
|
|
|
for i in json_info:
|
|
parse_args.manga_name = i['manga_name']
|
|
parse_args.url = i['url']
|
|
code, _info = _run_util(args)
|
|
multi_info[i['directory']] = _info
|
|
parse_args.quiet or (parse_args.print_json and print(multi_info))
|
|
|
|
|
|
@catch
|
|
def main():
|
|
# if ~__version__.find('alpha'):
|
|
# print('Alpha release! There may be errors!', file=stderr)
|
|
temp_path = get_temp_path()
|
|
path.isdir(temp_path) or makedirs(temp_path)
|
|
|
|
args = get_cli_arguments()
|
|
parse_args = args.parse_args()
|
|
|
|
code, _info = _run_util(args)
|
|
parse_args.quiet or (parse_args.print_json and print(_info))
|
|
|
|
exit(code)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|