GetLink.py 1.4 KB

1234567891011121314151617181920212223242526272829303132
  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,arg,res):
  20. name:str = card['version-id']
  21. data = res.data[f'{arg[1]}Link']
  22. if '${' in name:
  23. raise KeyError()
  24. if arg[1] == 'Mcbbs' and name not in data:
  25. LogInfo(f'尝试获取MCBBS链接 {name},但未找到,由于 MCBBS 关站,返回空值以抑制 Warning')
  26. return ''
  27. if arg[1] == 'Official' and name not in data:
  28. return gen_official_link(name)
  29. return data[name]