添加更新服务器选项
This commit is contained in:
parent
dd4614295b
commit
40a0c230a8
4 changed files with 59 additions and 6 deletions
|
@ -108,6 +108,8 @@ class ExtraPart(ConfModel):
|
|||
"检查更新"
|
||||
waiting_scene: WaitingSceneConf
|
||||
"等待时间"
|
||||
update_server: str = "https://mower.zhaozuohong.vip"
|
||||
"更新服务器"
|
||||
|
||||
|
||||
class LongTaskPart(ConfModel):
|
||||
|
|
|
@ -2,14 +2,20 @@ import os
|
|||
import sys
|
||||
from datetime import datetime, timedelta
|
||||
from importlib import reload
|
||||
from io import BytesIO
|
||||
from shutil import rmtree
|
||||
from time import mktime
|
||||
from zipfile import ZipFile
|
||||
|
||||
import requests
|
||||
from htmllistparse import fetch_listing
|
||||
|
||||
from arknights_mower.utils import config
|
||||
from arknights_mower.utils.image import loadimg
|
||||
from arknights_mower.utils.log import logger
|
||||
from arknights_mower.utils.path import get_path
|
||||
|
||||
extract_path = get_path("@install/tmp/hot_update")
|
||||
mirror = "https://mower.zhaozuohong.vip"
|
||||
sign_in = None
|
||||
navigation = None
|
||||
|
||||
|
@ -37,10 +43,47 @@ def get_listing():
|
|||
last_time, listing = last_listing
|
||||
if last_time and datetime.now() - last_time < timedelta(minutes=10):
|
||||
return listing
|
||||
cwd, listing = fetch_listing(mirror)
|
||||
cwd, listing = fetch_listing(config.conf.update_server)
|
||||
last_listing = datetime.now(), listing
|
||||
return listing
|
||||
|
||||
|
||||
def update():
|
||||
load_module(False)
|
||||
global last_update
|
||||
|
||||
if last_update and datetime.now() - last_update < timedelta(minutes=30):
|
||||
logger.info("跳过热更新检查")
|
||||
load_module(False)
|
||||
return
|
||||
|
||||
logger.info("检查热更新资源")
|
||||
listing = get_listing()
|
||||
filename = "hot_update.zip"
|
||||
entry = next(i for i in listing if i.name == filename)
|
||||
remote_time = datetime.fromtimestamp(mktime(entry.modified))
|
||||
download_update = True
|
||||
if extract_path.exists():
|
||||
local_time = datetime.fromtimestamp(os.path.getctime(extract_path))
|
||||
if local_time > remote_time:
|
||||
download_update = False
|
||||
else:
|
||||
rmtree(extract_path)
|
||||
if download_update:
|
||||
logger.info("开始下载热更新资源")
|
||||
retry_times = 3
|
||||
for i in range(retry_times):
|
||||
try:
|
||||
r = requests.get(f"{config.conf.update_server}/{filename}")
|
||||
ZipFile(BytesIO(r.content)).extractall(extract_path)
|
||||
break
|
||||
except Exception as e:
|
||||
logger.exception(f"热更新出错:{e}")
|
||||
if i >= retry_times:
|
||||
logger.error("热更新失败!")
|
||||
return
|
||||
logger.info("热更新成功")
|
||||
else:
|
||||
logger.info("本地资源已是最新")
|
||||
|
||||
last_update = datetime.now()
|
||||
load_module(download_update)
|
||||
|
|
|
@ -41,7 +41,8 @@ const {
|
|||
maa_gap,
|
||||
custom_screenshot,
|
||||
check_for_updates,
|
||||
waiting_scene
|
||||
waiting_scene,
|
||||
update_server
|
||||
} = storeToRefs(config_store)
|
||||
|
||||
const { operators } = storeToRefs(plan_store)
|
||||
|
@ -404,6 +405,9 @@ const scene_name = {
|
|||
<template #suffix>小时</template>
|
||||
</n-input-number>
|
||||
</n-form-item>
|
||||
<n-form-item label="更新服务器">
|
||||
<n-input v-model:value="update_server" />
|
||||
</n-form-item>
|
||||
</n-form>
|
||||
</n-card>
|
||||
</div>
|
||||
|
|
|
@ -78,6 +78,7 @@ export const useConfigStore = defineStore('config', () => {
|
|||
const notification_level = ref('INFO')
|
||||
const waiting_scene = ref({})
|
||||
const exipring_medicine_on_weekend = ref(false)
|
||||
const update_server = ref("")
|
||||
|
||||
async function load_shop() {
|
||||
const response = await axios.get(`${import.meta.env.VITE_HTTP_URL}/shop`)
|
||||
|
@ -171,6 +172,7 @@ export const useConfigStore = defineStore('config', () => {
|
|||
notification_level.value = response.data.notification_level
|
||||
waiting_scene.value = response.data.waiting_scene
|
||||
exipring_medicine_on_weekend.value = response.data.exipring_medicine_on_weekend
|
||||
update_server.value = response.data.update_server
|
||||
}
|
||||
|
||||
function build_config() {
|
||||
|
@ -256,7 +258,8 @@ export const useConfigStore = defineStore('config', () => {
|
|||
check_for_updates: check_for_updates.value,
|
||||
notification_level: notification_level.value,
|
||||
waiting_scene: waiting_scene.value,
|
||||
exipring_medicine_on_weekend: exipring_medicine_on_weekend.value
|
||||
exipring_medicine_on_weekend: exipring_medicine_on_weekend.value,
|
||||
update_server: update_server.value
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -345,6 +348,7 @@ export const useConfigStore = defineStore('config', () => {
|
|||
check_for_updates,
|
||||
notification_level,
|
||||
waiting_scene,
|
||||
exipring_medicine_on_weekend
|
||||
exipring_medicine_on_weekend,
|
||||
update_server
|
||||
}
|
||||
})
|
||||
|
|
Loading…
Reference in a new issue