Skip to content

Commit

Permalink
2.018 add "force" cli option and "ignored_errors" config option #34
Browse files Browse the repository at this point in the history
  • Loading branch information
fffonion committed Nov 10, 2017
1 parent feee4eb commit 0527195
Show file tree
Hide file tree
Showing 7 changed files with 34 additions and 4 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -5,6 +5,7 @@
- 增加`download_range`选项,选择下载范围
- 增加`timeout`选项,设置下载图片的超时
- 增加`proxy_image_only`选项,设置仅使用代理下载图片
- 命令行增加`--force`选项,设置忽略配额继续下载; 配置增加`ignored_errors`选项,设置忽略的错误码
- 检查下载的图片是否完整
- 识别`socks5h`代理字符串

Expand Down
4 changes: 3 additions & 1 deletion README.MD
Expand Up @@ -47,6 +47,7 @@ xeH
- **scan_thread_cnt** 扫描线程数,默认为1
- **download_thread_cnt** 下载线程数,默认为5
- **download_timeout** 设置下载图片的超时,默认为10
- **ignored_errors** 设置忽略的错误码, 默认为空, 错误码可以从`const.py`中获得
- **log_path** 日志路径,默认为`eh.log`
- **log_verbose** 日志等级,可选1-3,值越大输出越详细,默认为2
- **save_tasks** 是否保存任务到`h.json`,默认为否
Expand Down Expand Up @@ -94,7 +95,8 @@ xeH
设置下载的图片范围, 格式为 开始位置-结束位置, 或者单张图片的位置, 使用逗号来分隔多个范围, 例如
5-10,15,20-25, 默认为下载所有
-t N, --thread N 下载线程数 (默认: 5)
--timeout N 设置下载图片的超时 (默认: 10s)
--timeout N 设置下载图片的超时 (默认: 10秒)
-f, --force 忽略配额判断,继续下载 (默认: False)
-l /path/to/eh.log, --logpath /path/to/eh.log
保存日志的路径 (默认: eh.log)
-v, --verbose 设置日志装逼等级 (默认: 2)
Expand Down
20 changes: 20 additions & 0 deletions xeHentai/cli.py
Expand Up @@ -106,6 +106,21 @@ def _parse_range(s):
rg.append((start, end))
return sorted(rg)

class _AddToListAction(argparse.Action):
''' This action add a value 'add_value' to the list 'dest' '''
def __init__(self, option_strings, dest, add_value=None, current=None, nargs=None, **kwargs):
super(_AddToListAction, self).__init__(option_strings, dest, default=None, nargs=0, **kwargs)
self.add_value = add_value
# to use in formatting output
self.current = current

def __call__(self, parser, namespace, values, option_string=None):
if getattr(namespace, self.dest, None) is None:
setattr(namespace, self.dest, [])
items = list(getattr(namespace, self.dest))
items.append(self.add_value)
setattr(namespace, self.dest, items)

def parse_opt():
_def = {k:v for k,v in default_config.__dict__.items() if not k.startswith("_")}
_def.update({k:v for k,v in config.__dict__.items() if not k.startswith("_")})
Expand Down Expand Up @@ -158,6 +173,11 @@ def parse_opt():
help = i18n.XEH_OPT_t)
parser.add_argument('--timeout', type = int, metavar = "N", default = _def['download_timeout'],
dest = 'download_timeout', help = i18n.XEH_OPT_timeout)
parser.add_argument('-f', '--force', action = _AddToListAction,
current = ERR_QUOTA_EXCEEDED in _def['ignored_errors'],
add_value = ERR_QUOTA_EXCEEDED, dest='ignored_errors',
help = i18n.XEH_OPT_f)

parser.add_argument('-l', '--logpath', metavar = '/path/to/eh.log',
default = os.path.abspath(_def['log_path']), help = i18n.XEH_OPT_l)

Expand Down
6 changes: 5 additions & 1 deletion xeHentai/core.py
Expand Up @@ -44,6 +44,7 @@ def __init__(self):
self._all_tasks = {} # for saving states
self._all_threads = [[] for i in range(20)]
self.cfg = {k:v for k,v in default_config.__dict__.items() if not k.startswith("_")}
# note that ignored_errors are overwritten using val from custom config
self.cfg.update({k:v for k,v in config.__dict__.items() if not k.startswith("_")})
self.proxy = None
self.cookies = {"nw": "1"}
Expand All @@ -58,7 +59,10 @@ def __init__(self):
self.rpc = None

def update_config(self, cfg_dict):
self.cfg.update({k:v for k, v in cfg_dict.items() if k in cfg_dict})
self.cfg.update({k:v for k, v in cfg_dict.items() if k in cfg_dict and k not in ('ignored_errors',)})
# merge ignored errors list
if 'ignored_errors' in cfg_dict and cfg_dict['ignored_errors']:
self.cfg['ignored_errors'] = list(set(self.cfg['ignored_errors'] + cfg_dict['ignored_errors']))
self.logger.set_level(logger.Logger.WARNING - self.cfg['log_verbose'])
self.logger.verbose("cfg %s" % self.cfg)
if cfg_dict['proxy']:
Expand Down
1 change: 1 addition & 0 deletions xeHentai/i18n/en_us.py
Expand Up @@ -63,6 +63,7 @@
XEH_OPT_download_range = "specify ranges of images to be downloaded, in format start-end, or single index, " \
"use comma to concat multiple ranges, e.g.: 5-10,15,20-25, default to download all images"
XEH_OPT_timeout = "set image download timeout (current: %(default)ss)"
XEH_OPT_f = "download regardless of quota exceeded warning (current: %(current)s)"
XEH_OPT_h = "show this help message and exit"
XEH_OPT_version = "show program's version number and exit"
XEH_OPT_IGNORING_I = "ignoring -i option in daemon mode"
Expand Down
3 changes: 2 additions & 1 deletion xeHentai/i18n/zh_hans.py
Expand Up @@ -60,7 +60,8 @@
XEH_OPT_j = "使用日语标题, 如果关闭则使用英文或罗马字标题 (当前: %(default)s)"
XEH_OPT_download_range = "设置下载的图片范围, 格式为 开始位置-结束位置, 或者单张图片的位置, " \
"使用逗号来分隔多个范围, 例如 5-10,15,20-25, 默认为下载所有"
XEH_OPT_timeout = "设置下载图片的超时 (当前: %(default)ss)"
XEH_OPT_timeout = "设置下载图片的超时 (当前: %(default)s秒)"
XEH_OPT_f = "忽略配额判断,继续下载 (当前: %(current)s)"
XEH_OPT_h = "显示本帮助信息"
XEH_OPT_version = "显示版本信息"
XEH_OPT_IGNORING_I = "后台模式已忽略 -i 参数"
Expand Down
3 changes: 2 additions & 1 deletion xeHentai/i18n/zh_hant.py
Expand Up @@ -60,7 +60,8 @@
XEH_OPT_j = "使用日語標題, 如果關閉則使用英文或羅馬字標題 (當前: %(default)s)"
XEH_OPT_download_range = "設置下載的圖片範圍, 格式為 開始位置-結束位置, 或者單張圖片的位置, " \
"使用逗號來分隔多個範圍, 例如 5-10,15,20-25, 默認為下載所有"
XEH_OPT_timeout = "設置下載圖片的超時 (當前: %(default)ss)"
XEH_OPT_timeout = "設置下載圖片的超時 (當前: %(default)s秒)"
XEH_OPT_f = "忽略配額判斷,繼續下載 (當前: %(current)s)"
XEH_OPT_h = "顯示本幫助信息"
XEH_OPT_version = "顯示版本信息"
XEH_OPT_IGNORING_I = "後台模式已忽略 -i 參數"
Expand Down

0 comments on commit 0527195

Please sign in to comment.