Nattiden 1 éve
szülő
commit
774db6fdf9

+ 5 - 2
Project/modules/APIs.py

@@ -1,3 +1,7 @@
+"""
+API相关的页面
+"""
+
 import json
 from typing import TYPE_CHECKING
 from homepagebuilder.interfaces import page_class_handles, require
@@ -5,7 +9,6 @@ from homepagebuilder.core.page import CodeBasedPage
 if TYPE_CHECKING:
     from homepagebuilder.core.types import Context
 
-
 def get_args(context):
     if setter := context.setter:
         return setter.override
@@ -27,7 +30,7 @@ class StatusPage(CodeBasedPage):
     def get_content_type(self, setter):
         return 'text/plain'
 
-mcv = require('MinecraftVersions') # 需求前置 MinecraftVersions
+mcv = require('minecraft_version') # 需求前置 MinecraftVersions
 latest_version = mcv.get_latest()
 
 @page_class_handles('apis/versions/latest')

+ 96 - 0
Project/modules/apis.py

@@ -0,0 +1,96 @@
+"""
+API相关的页面
+"""
+
+import json
+from typing import TYPE_CHECKING
+from homepagebuilder.interfaces import page_class_handles, require
+from homepagebuilder.core.page import CodeBasedPage
+if TYPE_CHECKING:
+    from homepagebuilder.core.types import Context
+
+def get_args(context):
+    if setter := context.setter:
+        return setter.override
+    return {}
+
+def is_true(string:str):
+    return string and isinstance(string,str) and string.lower() != 'false'
+    
+@page_class_handles('apis/status')
+class StatusPage(CodeBasedPage):
+
+    @property
+    def display_name(self):
+        return 'api/status'
+
+    def generate(self, *args, **kwargs):
+        return 'ok'
+
+    def get_content_type(self, setter):
+        return 'text/plain'
+
+mcv = require('minecraft_version') # 需求前置 MinecraftVersions
+latest_version = mcv.get_latest()
+
+@page_class_handles('apis/versions/latest')
+class LatestVersionAPI(CodeBasedPage):
+
+    def __init__(self, project):
+        super().__init__(project)
+        self.latest_release = self.project.base_library.get_card(mcv.get_latest('release'),False)
+        if latest_snap_shot_id := mcv.get_latest('snapshot'):
+            self.latest_snapshot = self.project.base_library.get_card(latest_snap_shot_id,False)
+        else:
+            self.latest_snapshot = None
+        self.respond = None
+
+    @property
+    def display_name(self):
+        return 'api/versions/latest'
+
+    def pregen_respond(self, context):
+        respond = {}
+        if self.latest_snapshot:
+            respond['snapshot'] = self.extract_version_info(self.latest_snapshot,context)
+        respond['release'] = self.extract_version_info(self.latest_release,context)
+        self.respond = respond
+    
+    def extract_version_info(self,card,context):
+        respond = {}
+        expendedcard = context.builder.template_manager.expend_card_placeholders(card,'', context=context)
+        self.copyinfo(respond,expendedcard,'version-type')
+        self.copyinfo(respond,expendedcard,'intro')
+        self.copyinfo(respond,expendedcard,'version-image-link')
+        self.copyinfo(respond,expendedcard,'server-jar')
+        self.copyinfo(respond,expendedcard,'translator')
+        self.copyinfo(respond,expendedcard,'official-link')
+        self.copyinfo(respond,expendedcard,'wiki-link')
+        self.copyinfo(respond,expendedcard,'version-id')
+        self.copyinfo(respond,expendedcard,'title')
+        respond['homepage-json-link'] = f"https://news.bugjump.net/VersionDetail.json?ver={expendedcard['version-id']}"
+        return respond
+    
+    def copyinfo(self,respond,card,key):
+        respond[key] = card.get(key)
+
+    def generate(self, context):
+        args = get_args(context)
+        ensure_ascii = is_true(args.get('ascii',False))
+        if not self.respond:
+            self.pregen_respond(context)
+        return json.dumps(self.respond,ensure_ascii=ensure_ascii)
+    
+    def get_content_type(self, setter):
+        return 'application/json'
+    
+@page_class_handles('apis/versions/latest-card')
+class LatestVersionCardAPI(CodeBasedPage):
+    def generate(self, context:'Context'):
+        setter = context.setter
+        card = self.project.base_library.get_card('VersionLatestListCard', False)
+        card = setter.decorate(card)
+        return context.builder.template_manager.build(card, context=context)
+
+    def get_content_type(self, setter):
+        return 'application/xml'

+ 5 - 1
Project/modules/devnote.py → Project/modules/develop_note.py

@@ -1,3 +1,7 @@
+"""
+向 MARKDOWN 解析器注册开发者注释类型
+"""
+
 from homepagebuilder.interfaces import require
 markdown_parsers = require('markdown_parsers')
-markdown_parsers.QUOTE_TYPE_NAMES["devnote"] = '开发者注释'
+markdown_parsers.QUOTE_TYPE_NAMES["devnote"] = '开发者注释'

+ 4 - 0
Project/modules/CheckDomainSafety.py → Project/modules/domain_limit.py

@@ -1,3 +1,7 @@
+"""
+限制域名为指定列表内容
+"""
+
 from homepagebuilder.interfaces import config
 from homepagebuilder.interfaces.Events import on, ResultOverride
 

+ 4 - 1
Project/modules/VersionCategory.py → Project/modules/mc_version_category.py

@@ -1,6 +1,9 @@
+"""
+获取版本分类的卡片ID列表
+"""
 from homepagebuilder.interfaces import script,require
 
-mcv = require('MinecraftVersions') # 需求前置 MinecraftVersions
+mcv = require('minecraft_version') # 需求前置 MinecraftVersions
 MANIFSET = mcv.get_manifset()
 FULL_VERSIONS = MANIFSET.get('versions')
 ID_LIST = [version.get('id') for version in FULL_VERSIONS]

+ 5 - 1
Project/modules/VersionLists.py → Project/modules/mc_version_lists.py

@@ -1,6 +1,10 @@
+"""
+版本最新、存档页面列表
+"""
+
 from homepagebuilder.interfaces import require,script,format_code
 
-mcv = require('MinecraftVersions') # 需求前置 MinecraftVersions
+mcv = require('minecraft_version') # 需求前置 MinecraftVersions
 MANIFSET = mcv.get_manifset()
 FULL_VERSIONS = MANIFSET.get('versions')
 ID_LIST = [version.get('id') for version in FULL_VERSIONS]

+ 4 - 1
Project/modules/MainPageVersions.py → Project/modules/mc_version_mainpage.py

@@ -1,6 +1,9 @@
+"""
+主页MC版本卡片选择器
+"""
 from homepagebuilder.interfaces import script,require,Logger
 
-mcv = require('MinecraftVersions') # 需求前置 MinecraftVersions
+mcv = require('minecraft_version') # 需求前置 MinecraftVersions
 latest_version = mcv.get_latest()
 latest_type = mcv.get_version_type(latest_version)
 logger = Logger('MainPageVersions')

+ 4 - 1
Project/modules/ServerJar.py → Project/modules/mc_version_server.py

@@ -1,6 +1,9 @@
+"""
+获取MC版本服务器端 jar 包下载链接
+"""
 from homepagebuilder.interfaces import require,script
 
-mcv = require('MinecraftVersions') # 需求前置 MinecraftVersions
+mcv = require('minecraft_version') # 需求前置 MinecraftVersions
 get_server_jar = mcv.get_server_jar
 
 @script('ServerJar')

+ 4 - 0
Project/modules/MinecraftVersions.py → Project/modules/minecraft_version.py

@@ -1,3 +1,7 @@
+"""
+获取 MC 版本信息
+"""
+
 from homepagebuilder.interfaces import Logger
 import requests
 import json

+ 4 - 0
Project/modules/GetLink.py → Project/modules/offical_link.py

@@ -1,3 +1,7 @@
+"""
+生成官网链接
+"""
+
 import re
 from homepagebuilder.interfaces import script
 from homepagebuilder.core.formatter import format_code

+ 4 - 0
Project/modules/SeparatorContent.py → Project/modules/separator_content.py

@@ -1,3 +1,7 @@
+"""
+分割线内容空格生成
+"""
+
 from homepagebuilder.interfaces import script
 
 @script('SeparatorContent')

+ 5 - 0
Project/modules/ColorOverride.py → Project/modules/theme_color_override.py

@@ -1,3 +1,8 @@
+""" 
+替换主页的主题颜色 
+启用: news.replacecolor 设为 true
+"""
+
 from homepagebuilder.interfaces.Events import on, ResultOverride
 from homepagebuilder.core.config import enable_by_config