| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- """
- 生成官网链接
- """
- import re
- from homepagebuilder.interfaces import script
- from homepagebuilder.core.formatter import format_code
- 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]+$')
- RELEASE_CANDIDATE_PATTERN = re.compile(r'^.*-rc[0-9]+$')
- RELEASE_PATTERN = re.compile(r'^1\.[0-9]+(\.[0-9]+)?$')
- def gen_official_link(vid:str):
- '''生成官网链接'''
- if re.match(SNAPSHOT_PATTERN,vid):
- return f'https://minecraft.net/article/minecraft-snapshot-{vid.lower()}'
- if re.match(PRE_RELEASE_PATTERN,vid):
- version,sub=vid.split('-pre')
- return f'https://minecraft.net/article/minecraft-{version.replace(".","-")}-pre-release-{sub}'
- if re.match(RELEASE_CANDIDATE_PATTERN,vid):
- version,sub=vid.split('-rc')
- return f'https://minecraft.net/article/minecraft-{version.replace(".","-")}-release-candidate-{sub}'
- if re.match(RELEASE_PATTERN,vid):
- return f'https://minecraft.net/article/minecraft-java-edition-{vid.replace(".","-")}'
- return ''
- @script('GetLink')
- def get_link(link_type,link_key=None,**kwargs):
- card = kwargs['card']
- context = kwargs['context']
- name:str = card['version-id']
- if card.get('not_finished') == 'true' and link_type != 'Official':
- return ''
- data = context.data[f'{link_type}Link']
- if link_key:
- return data[link_key]
- name = format_code(name,card,context)
- if link_type == 'Official' and name not in data:
- return gen_official_link(name)
- result = data.get(name)
- return result if result else ""
|