返回提交历史
Added
g4f/providers/cache.py
+43
-0
Modified
g4f/tray.py
+4
-2
XFEstudio/gpt4free
Add FileStorage class
4941284d
代码差异
2 个文件
+47
-2
@@ -0,0 +1,43 @@
1
from __future__ import annotations
2
3
import os
4
import json
5
from ..image.copy_images import secure_filename
6
from ..cookies import get_cookies_dir
7
8
class FileStorage():
9
def __init__(self, storage_dir: str = None):
10
if storage_dir is None:
11
storage_dir = os.path.join(get_cookies_dir(), ".models")
12
self.storage_dir = storage_dir
13
14
def get_file(self, key: str) -> str:
15
return os.path.join(self.storage_dir, *[secure_filename(part) for part in key.split("/")]) + ".json"
16
17
def set(self, key: str, value: str):
18
file = self.get_file(key)
19
dirname = os.path.dirname(file)
20
if not os.path.exists(dirname):
21
os.makedirs(dirname)
22
with open(file, "w", encoding="utf-8") as f:
23
json.dump(value, f)
24
25
def get(self, key: str) -> str | None:
26
try:
27
with open(self.get_file(key), "r", encoding="utf-8") as f:
28
return json.load(f)
29
except FileNotFoundError:
30
return None
31
32
def delete(self, key: str):
33
try:
34
os.remove(self.get_file(key))
35
except FileNotFoundError:
36
pass
37
38
def clear(self):
39
for root, dirs, files in os.walk(os.path.join(get_cookies_dir(), ".models"), topdown=False):
40
for name in files:
41
os.remove(os.path.join(root, name))
42
for name in dirs:
43
os.rmdir(os.path.join(root, name))
@@ -154,8 +154,8 @@ def run_tray(
154
154
# ------------------------------------------------------------------ #
155
155
# Menu callbacks #
156
156
# ------------------------------------------------------------------ #
157
def on_open_browser(icon, item):
158
webbrowser.open(browser_url)
157
def on_open_browser(pathname: str = ""):
158
webbrowser.open(f"{browser_url}{pathname}")
159
159
160
160
def on_toggle_server(icon, item):
161
161
if _server_running.is_set():
@@ -182,6 +182,8 @@ def run_tray(
182
182
pystray.Menu.SEPARATOR,
183
183
pystray.MenuItem(server_label, on_toggle_server, enabled=server_enabled),
184
184
pystray.Menu.SEPARATOR,
185
pystray.MenuItem("Show logs", lambda: on_open_browser("/logs")),
186
pystray.Menu.SEPARATOR,
185
187
pystray.MenuItem("Quit", on_quit),
186
188
)
187
189