Files
mangaDownloader/manga-py-stable_1.x/manga_py/__init__.py
2019-12-14 22:33:14 -05:00

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