from functools import lru_cache from toolbox import get_conf CODE_HIGHLIGHT, ADD_WAIFU, LAYOUT = get_conf("CODE_HIGHLIGHT", "ADD_WAIFU", "LAYOUT") def minimize_js(common_js_path): try: import rjsmin, hashlib, glob, os # clean up old minimized js files, matching `common_js_path + '.min.*'` for old_min_js in glob.glob(common_js_path + '.min.*.js'): os.remove(old_min_js) # use rjsmin to minimize `common_js_path` c_jsmin = rjsmin.jsmin with open(common_js_path, "r") as f: js_content = f.read() minimized_js_content = c_jsmin(js_content) # compute sha256 hash of minimized js content sha_hash = hashlib.sha256(minimized_js_content.encode()).hexdigest()[:8] minimized_js_path = common_js_path + '.min.' + sha_hash + '.js' # save to minimized js file with open(minimized_js_path, "w") as f: f.write(minimized_js_content) # return minimized js file path return minimized_js_path except: return common_js_path @lru_cache def get_common_html_javascript_code(): js = "\n" common_js_path_list = [ "themes/common.js", "themes/theme.js", "themes/tts.js", "themes/init.js", "themes/welcome.js", ] if ADD_WAIFU: # 添加Live2D common_js_path_list += [ "themes/waifu_plugin/jquery.min.js", "themes/waifu_plugin/jquery-ui.min.js", ] for common_js_path in common_js_path_list: if '.min.' not in common_js_path: minimized_js_path = minimize_js(common_js_path) else: minimized_js_path = common_js_path jsf = f"file={minimized_js_path}" js += f"""\n""" if not ADD_WAIFU: js += """\n""" return js