Files
2019-12-14 22:33:14 -05:00

126 lines
3.7 KiB
Python

from argparse import Namespace
from datetime import datetime
from sys import argv
from typing import Union
from manga_py import meta
class Info:
__doc__ = """
--print-json argument helper
{
'site': 'https://example.org/kumo-desu-ga-nani-ka',
'downloader': [
'https://manga-py.com/manga-py/',
'https://github.com/manga-py/manga-py',
'https://github.com/yuru-yuri/manga-py',
'https://yuru-yuri.github.io/manga-py',
],
'version': '1.1.4',
'delta': '0:00:00.003625',
'start': '2018-06-08 17:22:24.419565',
'end': '2018-06-08 17:22:24.423190',
'user_agent': 'Mozilla/5.0',
'cookies': {'cf_clearance': 'ec-1528654923-86400', '__cfduid': '21528654914'},
'args': {
'_raw_params': 'manga-py --cbz https://example.org/kumo-desu-ga-nani-ka',
'url': 'https://example.org/kumo-desu-ga-nani-ka',
'name': None,
'destination': None,
'no-progress': False,
'cbz': False,
'skip-volumes': None,
'max-volumes': None,
'user-agent': None,
'proxy': None,
'reverse-downloading': None,
'rewrite-exists-archives': None,
'no-multi-threads': None,
},
'error': False,
'error_msg': '',
'volumes': [
{
'name': 'Kumo desu ga, nani ka? - 0',
'path': 'Manga/kumo-desu-ga-nani-ka/vol_000.zip',
},
{
'name': 'Kumo desu ga, nani ka? - 1',
'path': 'Manga/kumo-desu-ga-nani-ka/vol_001.zip',
},
],
}
"""
_data = None
_start_time = None
@staticmethod
def _dt(dt, fmt: str = '%A, %d. %B %Y %H:%M:%S'):
return dt.strftime(fmt)
def __init__(self, args: Union[Namespace, dict]): # see manga_py.cli arguments
_args = args.__dict__ if args is not dict else args
_args['_raw_params'] = ' '.join(argv)
self._data = {
'site': args.url,
'downloader': meta.__downloader_uri__,
'version': meta.__version__,
'delta': None,
'init': self._dt(datetime.now()),
'start': None,
'end': None,
'user_agent': None,
'cookies': None,
'args': _args,
'return_code': 0,
'error': False,
'error_msg': None,
'volumes': [],
}
self._volumes = []
def set_ua(self, ua):
self._data['user_agent'] = ua
def set_error(self, e, rc: int = 1):
self._data['return_code'] = rc
self._data['error'] = e
def start(self):
self._start_time = datetime.now()
def set_cookies(self, cookies):
self._data['cookies'] = cookies
def set_volumes(self, volumes: list):
self._data['volumes'] = volumes
def set_last_volume_error(self, error_message):
try:
self._data['volumes'][-1]['error'] = True
self._data['volumes'][-1]['error_message'] = error_message
except IndexError:
pass
def add_volume(self, url: str, path: str, files: list = None):
volume = {
'url': url,
'path': path,
'error': False,
'error_message': '',
}
if files is not None:
volume['files'] = files
volume['num_files'] = len(files)
self._data['volumes'].append(volume)
def get(self):
self._data['delta'] = str(datetime.now() - self._start_time)
self._data['start'] = self._dt(self._start_time)
self._data['end'] = self._dt(datetime.now())
return self._data