From ecab9036b6d002a0c765dac3d4b9e29a018528ab Mon Sep 17 00:00:00 2001 From: misyaguziya Date: Tue, 8 Oct 2024 06:26:55 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=91=8D=EF=B8=8F[Update]=20Controller=20:?= =?UTF-8?q?=20software=20update=20=E3=81=AE=E5=87=A6=E7=90=86=E3=81=AB?= =?UTF-8?q?=E3=83=AA=E3=83=88=E3=83=A9=E3=82=A4=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src-python/config.py | 5 +++++ src-python/model.py | 38 +++++++++++++++++++------------------- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/src-python/config.py b/src-python/config.py index 6f798240..1d9b530d 100644 --- a/src-python/config.py +++ b/src-python/config.py @@ -57,6 +57,10 @@ class Config: def GITHUB_URL(self): return self._GITHUB_URL + @property + def UPDATER_URL(self): + return self._UPDATER_URL + @property def BOOTH_URL(self): return self._BOOTH_URL @@ -961,6 +965,7 @@ class Config: self._PATH_LOGS = os_path.join(self._PATH_LOCAL, "logs") os_makedirs(self._PATH_LOGS, exist_ok=True) self._GITHUB_URL = "https://api.github.com/repos/misyaguziya/VRCT/releases/latest" + self._UPDATER_URL = "https://api.github.com/repos/misyaguziya/VRCT_updater/releases/latest" self._BOOTH_URL = "https://misyaguziya.booth.pm/" self._DOCUMENTS_URL = "https://mzsoftware.notion.site/VRCT-Documents-be79b7a165f64442ad8f326d86c22246" self._DEEPL_AUTH_KEY_PAGE_URL = "https://www.deepl.com/ja/account/summary" diff --git a/src-python/model.py b/src-python/model.py index 52ac1475..b2c7a9f0 100644 --- a/src-python/model.py +++ b/src-python/model.py @@ -352,25 +352,25 @@ class Model: @staticmethod def updateSoftware(): - try: - program_name = "updater.exe" - release_url = "https://api.github.com/repos/misyaguziya/VRCT_updater/releases/latest" - current_directory = config.PATH_LOCAL - res = requests_get(release_url) - assets = res.json()['assets'] - url = [i["browser_download_url"] for i in assets if i["name"] == program_name][0] - - res = requests_get(url, stream=True) - with open(os_path.join(current_directory, program_name), 'wb') as file: - for chunk in res.iter_content(chunk_size=1024*5): - file.write(chunk) - except Exception: - import traceback - with open('error.log', 'a') as f: - traceback.print_exc(file=f) - - command = [current_directory, program_name] - Popen(command, cwd=current_directory) + # try to update at most 5 times + for _ in range(5): + try: + program_name = "update.exe" + current_directory = config.PATH_LOCAL + res = requests_get(config.UPDATER_URL) + assets = res.json()['assets'] + url = [i["browser_download_url"] for i in assets if i["name"] == program_name][0] + res = requests_get(url, stream=True) + with open(os_path.join(current_directory, program_name), 'wb') as file: + for chunk in res.iter_content(chunk_size=1024*5): + file.write(chunk) + break + except Exception: + import traceback + with open('error.log', 'a') as f: + traceback.print_exc(file=f) + # run updater + Popen(program_name, cwd=current_directory) def getListMicHost(self): result = [host for host in device_manager.getMicDevices().keys()]