GetLink.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import re
  2. from Interfaces import script
  3. SNAPSHOT_PATTERN = re.compile(r'^[0-9]{2}[w|W][0-9]{2}[A-Fa-f]$')
  4. PRE_RELEASE_PATTERN = re.compile(r'^.*-pre[0-9]+$')
  5. RELEASE_CANDIDATE_PATTERN = re.compile(r'^.*-rc[0-9]+$')
  6. RELEASE_PATTERN = re.compile(r'^1\.[0-9]+(\.[0-9]+)?$')
  7. def gen_official_link(vid:str):
  8. '''生成官网链接'''
  9. if re.match(SNAPSHOT_PATTERN,vid):
  10. return f'https://minecraft.net/article/minecraft-snapshot-{vid.lower()}'
  11. if re.match(PRE_RELEASE_PATTERN,vid):
  12. version,sub=vid.split('-pre')
  13. return f'https://minecraft.net/article/minecraft-{version.replace(".","-")}-pre-release-{sub}'
  14. if re.match(RELEASE_CANDIDATE_PATTERN,vid):
  15. version,sub=vid.split('-rc')
  16. return f'https://minecraft.net/article/minecraft-{version.replace(".","-")}-release-candidate-{sub}'
  17. if re.match(RELEASE_PATTERN,vid):
  18. return f'https://minecraft.net/article/minecraft-java-edition-{vid.replace(".","-")}'
  19. return ''
  20. @script('GetLink')
  21. def get_link(link_type,link_key=None,**kwargs):
  22. card = kwargs['card']
  23. res = kwargs['res']
  24. name:str = card['version-id']
  25. if card.get('not_finished') == 'true' and link_type != 'Official':
  26. return ''
  27. data = res.data[f'{link_type}Link']
  28. if link_key:
  29. return data[link_key]
  30. if '${' in name:
  31. raise KeyError()
  32. if link_type == 'Official' and name not in data:
  33. return gen_official_link(name)
  34. result = data.get(name)
  35. return result if result else ""