diff --git a/baidupcs_py/baidupcs/pcs.py b/baidupcs_py/baidupcs/pcs.py index a93c89c..1682f9d 100644 --- a/baidupcs_py/baidupcs/pcs.py +++ b/baidupcs_py/baidupcs/pcs.py @@ -4,6 +4,7 @@ from pathlib import Path from urllib.parse import urlparse, quote_plus + from urllib.error import HTTPError from base64 import standard_b64encode import re diff --git a/baidupcs_py/commands/download.py b/baidupcs_py/commands/download.py index 493e382..0605c34 100644 --- a/baidupcs_py/commands/download.py +++ b/baidupcs_py/commands/download.py @@ -172,18 +172,23 @@ def except_callback(task_id: Optional[TaskID]): encrypt_password=encrypt_password, ) - if task_id is not None: - length = len(meDownloader) - _progress.update(task_id, total=length) - _progress.start_task(task_id) - - meDownloader.download( - Path(localpath), - task_id=task_id, - continue_=True, - done_callback=_wrap_done_callback, - except_callback=except_callback, - ) + try: + if task_id is not None: + length = len(meDownloader) + _progress.update(task_id, total=length) + _progress.start_task(task_id) + + meDownloader.download( + Path(localpath), + task_id=task_id, + continue_=True, + done_callback=_wrap_done_callback, + except_callback=except_callback, + ) + except IOError: + # catch 104 connection reset issue 59 + _progress.remove_task(task_id) + _progress.stop() def _aget_py_cmd( self,