api_skin_info.py 2.6 KB

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