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

XFEstudio/gpt4free

Use tempfile if cookies dir is not writeable

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

代码差异

2 个文件 +21 -5
Modified g4f/gui/server/website.py +20 -4
@@ -2,8 +2,10 @@ from __future__ import annotations
2 2
3 3 import os
4 4 import requests
5 import tempfile
5 6 from datetime import datetime
6 7 from flask import send_from_directory, redirect
8
7 9 from ...image.copy_images import secure_filename
8 10 from ...cookies import get_cookies_dir
9 11 from ...errors import VersionNotFoundError
@@ -11,7 +13,7 @@ from ...constants import STATIC_URL, DOWNLOAD_URL, DIST_DIR
11 13 from ... import version
12 14
13 15 def redirect_home():
14 return redirect('/chat')
16 return redirect('/chat/')
15 17
16 18 def render(filename = "chat"):
17 19 if os.path.exists(DIST_DIR):
@@ -24,21 +26,35 @@ def render(filename = "chat"):
24 26 today = datetime.today().strftime('%Y-%m-%d')
25 27 cache_dir = os.path.join(get_cookies_dir(), ".gui_cache")
26 28 cache_file = os.path.join(cache_dir, f"{filename}.{today}.{secure_filename(f'{version.utils.current_version}-{latest_version}')}.html")
29 is_tempfile = False
27 30 if not os.path.exists(cache_file):
28 os.makedirs(cache_dir, exist_ok=True)
31 if os.access(cache_file, os.W_OK):
32 cache_file = tempfile.NamedTemporaryFile(suffix=".html", delete=False)
33 is_tempfile = True
34 else:
35 os.makedirs(cache_dir, exist_ok=True)
29 36 response = requests.get(f"{DOWNLOAD_URL}{filename}.html")
30 37 if not response.ok:
38 found = None
31 39 for root, _, files in os.walk(cache_dir):
32 40 for file in files:
33 41 if file.startswith(filename):
34 return send_from_directory(os.path.abspath(root), file)
42 found = os.path.abspath(root), file
35 43 break
44 if found:
45 return send_from_directory(found[0], found[1])
46 else:
47 response.raise_for_status()
36 48 html = response.text
37 49 html = html.replace("../dist/", f"dist/")
38 50 html = html.replace("\"dist/", f"\"{STATIC_URL}dist/")
39 51 with open(cache_file, 'w', encoding='utf-8') as f:
40 52 f.write(html)
41 return send_from_directory(os.path.abspath(cache_dir), os.path.basename(cache_file))
53 try:
54 return send_from_directory(os.path.abspath(cache_dir), os.path.basename(cache_file))
55 finally:
56 if is_tempfile:
57 os.unlink(cache_file)
42 58
43 59 class Website:
44 60 def __init__(self, app) -> None:
Modified setup.py +1 -1
@@ -4,7 +4,7 @@ from setuptools import find_packages, setup
4 4
5 5 current_dir = os.path.abspath(os.path.dirname(__file__))
6 6
7 with open(os.path.join(current_dir, 'README.md'), "r") as f:
7 with open(os.path.join(current_dir, 'README.md'), "r", encoding="utf-8") as f:
8 8 long_description = f.read()
9 9
10 10 long_description = long_description.replace("[!NOTE]", "")