GetLink.py 1.3 KB

123456789101112131415161718192021222324252627282930313233
  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(card,args,res):
  20. name:str = card['version-id']
  21. if card.get('not_finished') == 'true':
  22. return ''
  23. data = res.data[f'{args[1]}Link']
  24. if len(args) >= 3:
  25. return data[args[2]]
  26. if '${' in name:
  27. raise KeyError()
  28. if args[1] == 'Official' and name not in data:
  29. return gen_official_link(name)
  30. return data[name]