diff --git a/gui/common.py b/gui/common.py index 8784ab5..b03c9c7 100644 --- a/gui/common.py +++ b/gui/common.py @@ -370,6 +370,10 @@ def queue_downloader(target, queue, stdout_queue, lang): target(item) except (EOFError, BrokenPipeError, OSError) as e: sys.stderr.write(str(e)) + except MemoryError as e: + # TODO: display a dialogue + import sys + sys.stdout.write(f'OUT OF MEMORY: {e}') def concurrent_download(target, items): diff --git a/gui/dist/change_log.txt b/gui/dist/change_log.txt index 47281e1..4d327c5 100644 --- a/gui/dist/change_log.txt +++ b/gui/dist/change_log.txt @@ -1,5 +1,9 @@ Pikax GUI Change Log +v0.2.0 6 April 2020 +- Refined time est output +- Refactored pikax handler + v0.1.10 26 Jan 2020 - Added options for pages/artworks limit diff --git a/gui/dist/latest/Pikax 0.1.10.zip b/gui/dist/latest/Pikax 0.2.0.zip similarity index 73% rename from gui/dist/latest/Pikax 0.1.10.zip rename to gui/dist/latest/Pikax 0.2.0.zip index fea3188..8ae9f79 100644 Binary files a/gui/dist/latest/Pikax 0.1.10.zip and b/gui/dist/latest/Pikax 0.2.0.zip differ diff --git a/gui/main.spec b/gui/main.spec index 963c39c..7d5f5c5 100644 --- a/gui/main.spec +++ b/gui/main.spec @@ -27,7 +27,7 @@ exe = EXE(pyz, a.zipfiles, a.datas, [], - name='Pikax 0.1.10', + name='Pikax 0.2.0', debug=False, bootloader_ignore_signals=False, strip=False, diff --git a/gui/pikaxhandler.py b/gui/pikaxhandler.py index 876aff9..5858a48 100644 --- a/gui/pikaxhandler.py +++ b/gui/pikaxhandler.py @@ -1,7 +1,7 @@ +import os import sys import pikax - import texts from pikax import Pikax, ArtworkError, DefaultPikaxResult from pikax import params @@ -90,6 +90,7 @@ def download_by_artist_id(self, artist_id, limit, content, folder, likes, pages_ sys.stdout.write(str(e)) +# log stuff def log(*objects, sep=' ', end='\n', file=sys.stdout, flush=True, start='', inform=False, save=False, error=False, warn=False, normal=False): import sys @@ -98,3 +99,16 @@ def log(*objects, sep=' ', end='\n', file=sys.stdout, flush=True, start='', info pikax.util.log = log + +pikax.texts.GUI_ARTWORK_DOWNLOAD_HEADING = { + 'English': 'Artwork Downloading' + os.linesep + os.linesep, + 'Chinese': '作品下载中' + os.linesep + os.linesep +} +pikax.texts.GUI_ID_PROCESSING_HEADING = { + 'English': 'Artwork ID Processing' + os.linesep, + 'Chinese': '作品ID处理中' + os.linesep +} + + +# request stuff +pikax.settings.TIMEOUT = 3 diff --git a/gui/settings.py b/gui/settings.py index 80a5d57..fe58240 100644 --- a/gui/settings.py +++ b/gui/settings.py @@ -5,7 +5,7 @@ MAIN_WINDOW_WIDTH = 1000 DOWNLOAD_WINDOW_WIDTH = 600 DOWNLOAD_WINDOW_HEIGHT = 400 -VERSION = '0.1.10' +VERSION = '0.2.0' # Paths CANVAS_BACKGROUND_PATH = 'assets/images/background.jpg' diff --git a/gui/texts.py b/gui/texts.py index 78c2b81..7fe9ed5 100644 --- a/gui/texts.py +++ b/gui/texts.py @@ -30,14 +30,6 @@ def set_lang(lang): raise KeyError(f'Given language: {lang} is not in supported languages: {LANGS}') LANG = lang pikax.texts.lang = GUI_LANG_TO_PIKAX_LANG[LANG] - pikax.texts.GUI_ARTWORK_DOWNLOAD_HEADING = { - 'English': 'Artwork Downloading' + str(os.linesep * 2), - 'Chinese': '作品下载中' + str(os.linesep * 2) - } - pikax.texts.GUI_ID_PROCESSING_HEADING = { - 'English': 'Artwork ID Processing' + os.linesep, - 'Chinese': '作品ID处理中' + os.linesep - } def get(key): diff --git a/pikax/texts.py b/pikax/texts.py index 31dca36..8648eb1 100644 --- a/pikax/texts.py +++ b/pikax/texts.py @@ -233,6 +233,10 @@ def __setattr__(self, key, value): 'English': 'Request timeout: retries: {retries}', 'Chinese': '请求超时:重试:{retries}' } + REQUEST_CONNECTION_ERROR = { + 'English': 'Request Connection Error: retries: {retries}', + 'Chinese': '请求链接出错:重试:{retries}' + } REQUEST_EXCEPTION = { 'English': 'Request exception encountered, retries: {retries}', 'Chinese': '请求时出错,重试:{retries}' diff --git a/pikax/util.py b/pikax/util.py index 64d9cc4..b0aa02e 100644 --- a/pikax/util.py +++ b/pikax/util.py @@ -138,6 +138,10 @@ def req(url, req_type='get', session=None, params=None, data=None, headers=setti if log_req: log(texts.REQUEST_TIME_OUT.format(retries=curr_retries), save=True) log(texts.REQUEST_REASON.format(e=e), save=True, inform=True) + except requests.exceptions.ConnectionError as e: + if log_req: + log(texts.REQUEST_CONNECTION_ERROR.format(retries=curr_retries), save=True) + log(texts.REQUEST_REASON.format(e=e), save=True, inform=True) except requests.exceptions.RequestException as e: if log_req: log(texts.REQUEST_EXCEPTION.format(retries=curr_retries), save=True, inform=True)