GetLink.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435
  1. from Core.Debug import LogWarning, LogInfo
  2. import re
  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. if re.match(SNAPSHOT_PATTERN,vid):
  9. return f'https://minecraft.net/article/minecraft-snapshot-{vid.lower()}'
  10. if re.match(PRE_RELEASE_PATTERN,vid):
  11. version,sub=vid.split('-pre')
  12. return f'https://minecraft.net/article/minecraft-{version.replace(".","-")}-pre-release-{sub}'
  13. if re.match(RELEASE_CANDIDATE_PATTERN,vid):
  14. version,sub=vid.split('-rc')
  15. return f'https://minecraft.net/article/minecraft-{version.replace(".","-")}-release-candidate-{sub}'
  16. if re.match(RELEASE_PATTERN,vid):
  17. return f'https://minecraft.net/article/minecraft-java-edition-{vid.replace(".","-")}'
  18. return ''
  19. def script(link_type,link_key=None,**kwargs):
  20. card = kwargs['card']
  21. res = kwargs['res']
  22. name:str = card['version-id']
  23. if card.get('not_finished') == 'true' and link_type != 'Official':
  24. return ''
  25. data = res.data[f'{link_type}Link']
  26. if link_key:
  27. return data[link_key]
  28. if '${' in name:
  29. raise KeyError()
  30. if link_type == 'Official' and name not in data:
  31. return gen_official_link(name)
  32. return data[name]