返回提交历史
Modified
g4f/gui/server/website.py
+23
-16
XFEstudio/gpt4free
Refactor render function in website.py to improve HTML handling and caching logic
ffae27b3
代码差异
1 个文件
+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: