api_skin_info.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. from .tool.func import *
  2. def api_skin_info(name = ''):
  3. with get_db_connect() as conn:
  4. curs = conn.cursor()
  5. name = skin_check() if name == '' else './views/' + name + '/index.html'
  6. if not flask.request.args.get('all', None):
  7. json_address = re.sub(r"(((?!\.|\/).)+)\.html$", "info.json", name)
  8. try:
  9. json_data = json.loads(open(json_address, encoding='utf8').read())
  10. except:
  11. json_data = None
  12. if json_data:
  13. return flask.jsonify(json_data)
  14. else:
  15. return flask.jsonify({}), 404
  16. else:
  17. a_data = {}
  18. d_link_data = {
  19. "ACME" : "https://raw.githubusercontent.com/openNAMU/openNAMU-Skin-ACME/master/info.json",
  20. "Liberty" : "https://raw.githubusercontent.com/openNAMU/openNAMU-Skin-Liberty/master/info.json",
  21. "Before Namu" : "https://raw.githubusercontent.com/openNAMU/openNAMU-Skin-Before_Namu/master/info.json"
  22. }
  23. for i in load_skin(skin_check(1), 1):
  24. json_address = re.sub(r"(((?!\.|\/).)+)\.html$", "info.json", './views/' + i + '/index.html')
  25. try:
  26. json_data = json.loads(open(json_address, encoding='utf8').read())
  27. except:
  28. json_data = None
  29. if json_data:
  30. if i == skin_check(1):
  31. json_data = {**json_data, **{ "main" : "true" }}
  32. if "info_link" in json_data:
  33. info_link = json_data["info_link"]
  34. elif json_data["name"] in d_link_data:
  35. info_link = d_link_data[json_data["name"]]
  36. else:
  37. info_link = 0
  38. if info_link != 0:
  39. try:
  40. get_data = urllib.request.urlopen(info_link)
  41. except:
  42. get_data = None
  43. if get_data and get_data.getcode() == 200:
  44. try:
  45. get_data = json.loads(get_data.read().decode())
  46. except:
  47. get_data = {}
  48. if "skin_ver" in get_data:
  49. json_data = {**json_data, **{ "lastest_version" : {
  50. "skin_ver" : get_data["skin_ver"]
  51. }}}
  52. a_data = {**a_data, **{ i : json_data }}
  53. return flask.jsonify(a_data)