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

73 lines
2.3 KiB
Python

class Http2:
provider = None
path_join = None
is_file = None
chapters = None
chapters_count = 0
def __init__(self, provider):
from manga_py.fs import path_join, is_file
self.provider = provider
self.path_join = path_join
self.is_file = is_file
def _get_name(self, idx):
return self.path_join(
self.provider._params.get('destination'),
self.provider._storage['manga_name'],
'{:0>3}-{}.{}'.format(
idx, self.provider.get_archive_name(),
self.provider._archive_type()
)
)
def __download(self, idx, name, url):
_min, _max = self._min_max_calculate()
self.provider._info.add_volume(
self.provider.chapter,
self.provider.get_archive_path()
)
self.provider.progress(self.chapters_count, idx)
if idx < _min or (idx >= _max > 0) or self.is_file(name):
return False
if not self.provider._simulate:
try:
self.provider.http().download_file(url, name, idx)
except Exception as e:
self.provider._info.set_last_volume_error(e)
def _min_max_calculate(self):
_min = self.provider._params.get('skip_volumes', 0)
_max = self.provider._params.get('max_volumes', 0)
self.chapters_count = len(self.chapters)
if _max > 0 or _min > 0:
if _max < self.chapters_count:
_max = self.chapters_count - _max
else:
_max = 0
self.chapters_count = self.chapters_count - _min - _max
if _max > 0 and _min > 0:
_max += _min - 1
return _min, _max
def download_archives(self, chapters=None):
if chapters is None:
chapters = self.provider._storage['chapters']
self.chapters = chapters
for idx, url in enumerate(chapters):
self.provider.before_download_chapter()
self.provider._storage['current_chapter'] = idx
name = self._get_name(idx)
idx, url, name = self.before_download(idx, url, name)
self.__download(idx, name, url)
self.after_download(idx, name)
def before_download(self, idx, url, _path):
return idx, url, _path
def after_download(self, idx, _path):
pass