返回提交历史
Modified
g4f/gui/server/website.py
+5
-9
Modified
g4f/tools/run_tools.py
+1
-4
XFEstudio/gpt4free
Use tempfile if cookies dir is not writeable
986c48bf
代码差异
2 个文件
+6
-13
@@ -2,7 +2,6 @@ from __future__ import annotations
2
2
3
3
import os
4
4
import requests
5
import tempfile
6
5
from datetime import datetime
7
6
from flask import send_from_directory, redirect
8
7
@@ -26,11 +25,10 @@ def render(filename = "chat"):
26
25
today = datetime.today().strftime('%Y-%m-%d')
27
26
cache_dir = os.path.join(get_cookies_dir(), ".gui_cache")
28
27
cache_file = os.path.join(cache_dir, f"{filename}.{today}.{secure_filename(f'{version.utils.current_version}-{latest_version}')}.html")
29
is_tempfile = False
28
is_temp = False
30
29
if not os.path.exists(cache_file):
31
30
if os.access(cache_file, os.W_OK):
32
cache_file = tempfile.NamedTemporaryFile(suffix=".html", delete=False).name
33
is_tempfile = True
31
is_temp = True
34
32
else:
35
33
os.makedirs(cache_dir, exist_ok=True)
36
34
response = requests.get(f"{DOWNLOAD_URL}{filename}.html")
@@ -48,13 +46,11 @@ def render(filename = "chat"):
48
46
html = response.text
49
47
html = html.replace("../dist/", f"dist/")
50
48
html = html.replace("\"dist/", f"\"{STATIC_URL}dist/")
49
if is_temp:
50
return html
51
51
with open(cache_file, 'w', encoding='utf-8') as f:
52
52
f.write(html)
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)
53
return send_from_directory(os.path.abspath(cache_dir), os.path.basename(cache_file))
58
54
59
55
class Website:
60
56
def __init__(self, app) -> None:
@@ -130,10 +130,7 @@ class AuthManager:
130
130
131
131
@staticmethod
132
132
def load_api_key(provider: Any) -> Optional[str]:
133
"""Load API key from config file if needed"""
134
if not getattr(provider, "needs_auth", False):
135
return None
136
133
"""Load API key from config file"""
137
134
auth_file = AuthManager.get_api_key_file(provider)
138
135
try:
139
136
if auth_file.exists():