Ver código fonte

auto server jar link

Nattiden 2 anos atrás
pai
commit
e155cb09a1

+ 22 - 6
Actions/check_mcv.py

@@ -10,8 +10,6 @@ PRE_RELEASE_PATTERN = re.compile(r'^.*-pre[0-9]+$')
 RELEASE_CANDIDATE_PATTERN = re.compile(r'^.*-rc[0-9]+$')
 RELEASE_CANDIDATE_PATTERN = re.compile(r'^.*-rc[0-9]+$')
 RELEASE_PATTERN = re.compile(r'^1\.[0-9]+(\.[0-9]+)?$')
 RELEASE_PATTERN = re.compile(r'^1\.[0-9]+(\.[0-9]+)?$')
 
 
-INIT_MARKDOWN = '---\nversion-image-link: null\nnot_finished: true\nserver-jar: null\ntranslator: null\n---\n'
-
 require_update = False
 require_update = False
 
 
 def get_version_type(vid:str):
 def get_version_type(vid:str):
@@ -25,15 +23,31 @@ def get_version_type(vid:str):
         return 'Release'
         return 'Release'
     return 'Others'
     return 'Others'
 
 
-def update_library(version_libloc:str,ver_type:str,ver_id:str):
+def update_library(version_mainfest,version_libloc:str,ver_type:str,ver_id:str):
+    #gen content
+    content = '---\n'
+    content += 'version-image-link: null\n'
+    content += 'not_finished: null\n'
+    content += f'server-jar: {get_server_jar(version_mainfest,ver_id)}\n'
+    content += 'translator: null\n'
+    content += '---\n'
+    #write file
     filepath = f'{version_libloc}{ver_type}{os.sep}{ver_id}.md'
     filepath = f'{version_libloc}{ver_type}{os.sep}{ver_id}.md'
     if os.path.exists(filepath):
     if os.path.exists(filepath):
         return False,'存在于版本库,无需更改'
         return False,'存在于版本库,无需更改'
     else:
     else:
         with open(filepath, "w") as file:
         with open(filepath, "w") as file:
-            file.write(INIT_MARKDOWN)
+            file.write(content)
         return True,'版本库内未找到,已添加'
         return True,'版本库内未找到,已添加'
 
 
+def get_server_jar(version_mainfest,version_id):
+    versions = version_mainfest.get('versions')
+    for version in versions:
+        if version['id'] == version_id:
+            response = requests.get(version['url'])
+            return json.loads(response.content)['downloads']['server']['url']
+    return None  
+
 try:
 try:
     response = requests.get(LAUNCHER_MANIFSET_URL)
     response = requests.get(LAUNCHER_MANIFSET_URL)
     version_mainfest = json.loads(response.content)
     version_mainfest = json.loads(response.content)
@@ -54,9 +68,11 @@ dir_location = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 version_lib_location = f'{dir_location}{os.sep}Libraries{os.sep}Versions{os.sep}'
 version_lib_location = f'{dir_location}{os.sep}Libraries{os.sep}Versions{os.sep}'
 
 
 release_require_update,latest_release_act = \
 release_require_update,latest_release_act = \
-update_library(version_lib_location,latest_release_type,latest_release_id)
+update_library(version_mainfest,version_lib_location,
+               latest_release_type,latest_release_id)
 snapshot_require_update,latest_snapshot_act = \
 snapshot_require_update,latest_snapshot_act = \
-update_library(version_lib_location,latest_snapshot_type,latest_snapshot_id)
+update_library(version_mainfest,version_lib_location,
+               latest_snapshot_type,latest_snapshot_id)
 
 
 print(f'latest_release_type={latest_release_type}')
 print(f'latest_release_type={latest_release_type}')
 print(f'latest_snapshot_type={latest_snapshot_type}')
 print(f'latest_snapshot_type={latest_snapshot_type}')

+ 1 - 0
Libraries/Versions/__LIBRARY__.yml

@@ -4,6 +4,7 @@ fill:
   version-image-link: ${$GetLink|ImageSta}
   version-image-link: ${$GetLink|ImageSta}
   version-id: ${file_name}
   version-id: ${file_name}
   title: ${file_name}
   title: ${file_name}
+  #server-jar: ${@ServerJar}
   templates:
   templates:
     - VersionLatestCard
     - VersionLatestCard
     - VersionMarkdownCard
     - VersionMarkdownCard

+ 12 - 1
Resources/Scripts/MinecraftVersions.py

@@ -5,6 +5,7 @@ import re
 
 
 LAUNCHER_MANIFSET_URL = 'https://piston-meta.mojang.com/mc/game/version_manifest.json'
 LAUNCHER_MANIFSET_URL = 'https://piston-meta.mojang.com/mc/game/version_manifest.json'
 MANIFSET = None
 MANIFSET = None
+VERSIONS_DICT = None
 FULL_VERSIONS = None
 FULL_VERSIONS = None
 LATEST_VERSIONS = None
 LATEST_VERSIONS = None
 
 
@@ -23,11 +24,14 @@ def get_manifset():
     return MANIFSET
     return MANIFSET
 
 
 def init_version_dict():
 def init_version_dict():
-    global LATEST_VERSIONS,FULL_VERSIONS
+    global LATEST_VERSIONS,FULL_VERSIONS,VERSIONS_DICT
+    VERSIONS_DICT = {}
     LATEST_VERSIONS = {'snapshot':None,'release':None}
     LATEST_VERSIONS = {'snapshot':None,'release':None}
     manifset = get_manifset()
     manifset = get_manifset()
     LATEST_VERSIONS.update(manifset['latest'])
     LATEST_VERSIONS.update(manifset['latest'])
     FULL_VERSIONS = manifset.get('versions')
     FULL_VERSIONS = manifset.get('versions')
+    for version in FULL_VERSIONS:
+        VERSIONS_DICT[version['id']] = version
     LogInfo(f'[VersionScript] 最新快照版:{LATEST_VERSIONS["snapshot"]}; 最新正式版:{LATEST_VERSIONS["release"]}')
     LogInfo(f'[VersionScript] 最新快照版:{LATEST_VERSIONS["snapshot"]}; 最新正式版:{LATEST_VERSIONS["release"]}')
     
     
 def get_latest(version_type = 'snapshot',version_rank = 1):
 def get_latest(version_type = 'snapshot',version_rank = 1):
@@ -45,6 +49,13 @@ def get_latest(version_type = 'snapshot',version_rank = 1):
                 return version['id']
                 return version['id']
     return ''
     return ''
 
 
+def get_server_jar(version_id):
+    global VERSIONS_DICT
+    if not (ver_info := VERSIONS_DICT.get(version_id)):
+        return None
+    response = requests.get(ver_info['url'])
+    return json.loads(response.content)['downloads']['server']['url']
+    
 SNAPSHOT_PATTERN = re.compile(r'^[0-9]{2}[w|W][0-9]{2}[A-Fa-f]$')
 SNAPSHOT_PATTERN = re.compile(r'^[0-9]{2}[w|W][0-9]{2}[A-Fa-f]$')
 PRE_RELEASE_PATTERN = re.compile(r'^.*-pre[0-9]+$')
 PRE_RELEASE_PATTERN = re.compile(r'^.*-pre[0-9]+$')
 RELEASE_CANDIDATE_PATTERN = re.compile(r'^.*-rc[0-9]+$')
 RELEASE_CANDIDATE_PATTERN = re.compile(r'^.*-rc[0-9]+$')

+ 7 - 0
Resources/Scripts/ServerJar.py

@@ -0,0 +1,7 @@
+from Core.ModuleManager import invokeModule, untilLoaded
+
+untilLoaded('MinecraftVersions') # 需求前置 MinecraftVersions
+get_server_jar = invokeModule('MinecraftVersions','get_server_jar')
+
+def script(card,**kwargs):
+    return get_server_jar(card['version-id'])