XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 1
返回提交历史

XFEstudio/gpt4free

Refactor render function in website.py to improve HTML handling and caching logic

ffae27b3
hlohaus <983577+hlohaus@users.noreply.github.com>
提交于

代码差异

1 个文件 +23 -16
Modified g4f/gui/server/website.py +23 -16
@@ -3,6 +3,7 @@ from __future__ import annotations
3 3 import os
4 4 import requests
5 5 from datetime import datetime
6 from urllib.parse import quote, unquote
6 7 from flask import send_from_directory, redirect, request
7 8
8 9 from ...image.copy_images import secure_filename
@@ -17,10 +18,14 @@ def redirect_home():
17 18 def render(filename = "home", download_url: str = DOWNLOAD_URL):
18 19 if download_url == DOWNLOAD_URL:
19 20 filename += ("" if "." in filename else ".html")
21 html = None
20 22 if os.path.exists(DIST_DIR) and not request.args.get("debug"):
21 23 path = os.path.abspath(os.path.join(os.path.dirname(DIST_DIR), filename))
22 24 if os.path.exists(path):
23 return send_from_directory(os.path.dirname(path), os.path.basename(path))
25 if download_url == DOWNLOAD_URL:
26 html = open(path, 'r', encoding='utf-8').read()
27 else:
28 return send_from_directory(os.path.dirname(path), os.path.basename(path))
24 29 try:
25 30 latest_version = version.utils.latest_version
26 31 except VersionNotFoundError:
@@ -34,22 +39,24 @@ def render(filename = "home", download_url: str = DOWNLOAD_URL):
34 39 is_temp = True
35 40 else:
36 41 os.makedirs(cache_dir, exist_ok=True)
37 response = requests.get(f"{download_url}{filename}")
38 if not response.ok:
39 found = None
40 for root, _, files in os.walk(cache_dir):
41 for file in files:
42 if file.startswith(secure_filename(filename)):
43 found = os.path.abspath(root), file
44 break
45 if found:
46 return send_from_directory(found[0], found[1])
47 else:
48 response.raise_for_status()
49 html = response.text
42 if html is None:
43 response = requests.get(f"{download_url}{filename}")
44 if not response.ok:
45 found = None
46 for root, _, files in os.walk(cache_dir):
47 for file in files:
48 if file.startswith(secure_filename(filename)):
49 found = os.path.abspath(root), file
50 break
51 if found:
52 return send_from_directory(found[0], found[1])
53 else:
54 response.raise_for_status()
55 html = response.text
56 html = html.replace("../dist/", f"dist/")
57 html = html.replace("\"dist/", f"\"{STATIC_URL}dist/")
50 58 html = html.replace(JSDELIVR_URL, "/")
51 html = html.replace("../dist/", f"dist/")
52 html = html.replace("\"dist/", f"\"{STATIC_URL}dist/")
59 html = html.replace("{{ v }}", quote(unquote(request.query_string.decode())) or str(version.utils.current_version))
53 60 if is_temp:
54 61 return html
55 62 with open(cache_file, 'w', encoding='utf-8') as f: