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

XFEstudio/gpt4free

Add FileStorage class

4941284d
hlohaus <hlohaus@users.noreply.github.com>
提交于

代码差异

2 个文件 +47 -2
Added g4f/providers/cache.py +43 -0
@@ -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))
Modified g4f/tray.py +4 -2
@@ -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