Bläddra i källkod

add debug settings

Nattiden 1 år sedan
förälder
incheckning
b0688ab076

+ 2 - 1
.gitignore

@@ -10,4 +10,5 @@ Log
 private.*
 output/
 Private/
-output.xaml
+output.xaml
+/Project/configs/local.*

+ 3 - 2
Project/configs/config.yml

@@ -1,6 +1,7 @@
 Server.Update.GitHub.Webhook.Enable: True
 #Server.RateLimit.Enable: True
 Public.domain: news.bugjump.net
-Server.Version.By: githash
+Server.Version.By: hash
 Refresher.Enable: true
-Refresher.Precision: d
+Refresher.Precision: d
+NewsHomepage.Debug: False

+ 1 - 1
Project/libraries/Homepage/VersionLatestListCard.xaml

@@ -4,7 +4,7 @@ ${@VersionLatestList}
 <Line X1="0" X2="100" Stroke="{DynamicResource ColorBrush5}"  Opacity="0.7" StrokeThickness="1.2"
      HorizontalAlignment="Center" Stretch="Fill" Margin="4,4"/>
 <local:MyListItem Margin="10,1" ToolTip="点击跳转到列表界面" LogoScale="1.04"
-Logo="https://img.picgo.net/2025/02/15/Bookshelf_JE4_BE2de3fa45de5d6d91f.png" Title="历史版本更新日志" Info="点击查看更多更新日志"
+Logo="https://s21.ax1x.com/2025/07/11/pVQXQTx.png" Title="历史版本更新日志" Info="点击查看更多更新日志"
 EventType="打开帮助" EventData="${@Link|VersionArchiveList}" Type="Clickable" />
 </StackPanel>
 </local:MyCard>

+ 18 - 0
Project/modules/debug.py

@@ -0,0 +1,18 @@
+from homepagebuilder.interfaces import script, config, enable_by
+from homepagebuilder.core.utils.event import listen_event as on, ResultOverride
+
+
+DEBUG_MODE = config('NewsHomepage.Debug', False, bool)
+
+@script('DebugMode')
+def is_debug():
+    return DEBUG_MODE
+
+@on('server.get.page.start')
+@enable_by(DEBUG_MODE)
+def test_reload(api, alias, client, args):
+    if alias != 'reload':
+        return
+    api.reload_project()
+    raise ResultOverride({'response':'Success.',
+                          'content-type':'text/plain'})

+ 4 - 2
Project/modules/homepage_preference.py

@@ -1,4 +1,4 @@
-from homepagebuilder.interfaces import script
+from homepagebuilder.interfaces import script, config
 from homepagebuilder.core.types import Context
 
 def true_that(obj:str):
@@ -13,7 +13,9 @@ PREFERENCE_LIST=[
     'beta',
     'domain'
 ]
-DOMAIN = 'https://pcl.mcnews.thestack.top/'
+DOMAIN = config('NewsHomepage.Domain', 'https://pcl.mcnews.thestack.top/', str)
+if not DOMAIN.endswith('/'):
+    DOMAIN += '/'
 
 @script('PreferenceUrl')
 def get_preferece_url(context:'Context', *_args, **_kwargs):

+ 14 - 0
Project/modules/minecraft_version.py

@@ -3,10 +3,15 @@
 """
 
 from homepagebuilder.interfaces import Logger
+from homepagebuilder.core.config import config
+from typing import TYPE_CHECKING
 import requests
 import json
 import re
 
+if TYPE_CHECKING:
+    from homepagebuilder.core.types import Context
+
 LAUNCHER_MANIFSET_URL = 'https://piston-meta.mojang.com/mc/game/version_manifest.json'
 MANIFSET = None
 VERSIONS_DICT = None
@@ -16,6 +21,7 @@ LATEST_VERSIONS = None
 logger = Logger("VersionScript")
 
 def fetch_manifset():
+    logger.info("正在加载 MC 版本列表")
     try:
         response = requests.get(LAUNCHER_MANIFSET_URL,timeout=10000)
         return json.loads(response.content)
@@ -86,3 +92,11 @@ def get_version_type(version_id):
     if re.match(RELEASE_PATTERN,version_id):
         return 'release'
     return 'other'
+
+def init(context:'Context', *args, **kwargs):
+    global MANIFSET
+    if config('NewsHomepage.MCV.UseReloadCache', config('NewsHomepage.Debug')):
+        if mcv_manifset_cache := context.builder.get_data('mcv_manifset_cache'):
+            MANIFSET = mcv_manifset_cache
+        else:
+            context.builder.set_data('mcv_manifset_cache', get_manifset())

+ 29 - 7
Project/modules/zh_translate.py

@@ -1,14 +1,14 @@
 import requests
 import json
 from homepagebuilder.interfaces import script, Logger
+from homepagebuilder.core.config import config
+from typing import TYPE_CHECKING
 
+if TYPE_CHECKING:
+    from homepagebuilder.core.types import Context
+    
 logger = Logger("TranslationScript")
-
-response = requests.get('https://raw.githubusercontent.com/Light-Beacon/Minecraft-ZH-Translation-Sheet/refs/heads/main/data/translations.json', 
-                        timeout=10)
-response_content = response.content
-translations = json.loads(response_content)
-logger.info("加载中文翻译数据成功, 共计 %d 条翻译", len(translations))
+TRANSLATIONS = {}
 
 @script('name')
 def translate(*args, **_):
@@ -19,4 +19,26 @@ def translate(*args, **_):
         fallback = args[1]
     else:
         fallback = name
-    return translations.get(name.lower(), fallback)
+    return TRANSLATIONS.get(name.lower(), fallback)
+
+def fetch_transltions():
+    logger.info("正在加载中文翻译")
+    try:
+        response = requests.get('https://raw.githubusercontent.com/Light-Beacon/Minecraft-ZH-Translation-Sheet/refs/heads/main/data/translations.json', 
+                        timeout=10)
+    except ConnectionError:
+        logger.warning("无法加载中文翻译")
+        return {}
+    response_content = response.content
+    return json.loads(response_content)
+
+def init(context:'Context', *args, **kwargs):
+    global TRANSLATIONS
+    if config('NewsHomepage.Translation.UseReloadCache', config('NewsHomepage.Debug')):
+        if translations_manifset_cache := context.builder.get_data('translation_manifset_cache'):
+            TRANSLATIONS = translations_manifset_cache
+            logger.info("从缓存中加载中文翻译数据成功, 共计 %d 条翻译", len(TRANSLATIONS))
+            return
+    TRANSLATIONS = fetch_transltions()
+    logger.info("加载中文翻译数据成功, 共计 %d 条翻译", len(TRANSLATIONS))
+    context.builder.set_data('translation_manifset_cache', TRANSLATIONS)