LittleApple-fp16 commited on
Commit
8ffbcc8
·
verified ·
1 Parent(s): 77029e7

Update waifuc_gui/source_manager.py

Browse files
Files changed (1) hide show
  1. waifuc_gui/source_manager.py +85 -86
waifuc_gui/source_manager.py CHANGED
@@ -1,86 +1,85 @@
1
- import inspect
2
- import waifuc.source
3
- import gradio as gr
4
- from .config_manager import ConfigManager
5
-
6
- class SourceManager:
7
- def __init__(self, config_manager: ConfigManager):
8
- self.config_manager = config_manager
9
- self.source_classes = [
10
- cls for name, cls in inspect.getmembers(waifuc.source, inspect.isclass)
11
- if name.endswith("Source") and not inspect.isabstract(cls)
12
- ]
13
- self.source_names = [cls.__name__ for cls in self.source_classes]
14
-
15
- def get_source_params(self, selected_source):
16
- source_cls = next(cls for cls in self.source_classes if cls.__name__ == selected_source)
17
- sig = inspect.signature(source_cls.__init__)
18
- return [p for p in sig.parameters.values() if p.name != 'self']
19
-
20
- def create_param_inputs(self):
21
- params = {}
22
- for source in self.source_names:
23
- if source == "LocalSource":
24
- params[source] = {
25
- "file": gr.File(
26
- label="Upload ZIP file" if self.config_manager.get_config("language") == "en" else "上传zip文件",
27
- info="Upload a ZIP file containing images for LocalSource" if self.config_manager.get_config("language") == "en" else "上传包含图片的zip文件用于LocalSource",
28
- visible=False
29
- )
30
- }
31
- else:
32
- source_cls = next(cls for cls in self.source_classes if cls.__name__ == source)
33
- sig = inspect.signature(source_cls.__init__)
34
- for param in sig.parameters.values():
35
- if param.name != 'self':
36
- if param.name == "refresh_token":
37
- params.setdefault(source, {})[param.name] = gr.Textbox(
38
- label="Pixiv Refresh Token" if self.config_manager.get_config("language") == "en" else "Pixiv刷新令牌",
39
- type="password",
40
- visible=False,
41
- value=self.config_manager.get_config("pixiv_refresh_token"),
42
- info="Set in Config tab or here" if self.config_manager.get_config("language") == "en" else "在配置选项卡或此处设置"
43
- )
44
- elif param.name == "num_items":
45
- params.setdefault(source, {})[param.name] = gr.Number(
46
- label="Number of Items" if self.config_manager.get_config("language") == "en" else "图片数量",
47
- visible=False,
48
- value=self.config_manager.get_config("default_num_items"),
49
- info="Number of images to collect" if self.config_manager.get_config("language") == "en" else "要收集的图片数量"
50
- )
51
- elif param.annotation == list:
52
- params.setdefault(source, {})[param.name] = gr.Textbox(
53
- label=param.name,
54
- placeholder="Comma-separated tags, e.g., tag1,tag2" if self.config_manager.get_config("language") == "en" else "逗号分隔的标签,例如:tag1,tag2",
55
- visible=False
56
- )
57
- elif param.annotation == int:
58
- params.setdefault(source, {})[param.name] = gr.Number(
59
- label=param.name,
60
- visible=False
61
- )
62
- else:
63
- params.setdefault(source, {})[param.name] = gr.Textbox(
64
- label=param.name,
65
- visible=False
66
- )
67
- return params
68
-
69
- def instantiate_source(self, selected_source, params, file_handler):
70
- if selected_source == "LocalSource":
71
- uploaded_file = params.get("file", None)
72
- if not uploaded_file:
73
- raise ValueError(
74
- "Please upload a ZIP file for LocalSource" if self.config_manager.get_config("language") == "en" else
75
- "请上传LocalSource的zip文件"
76
- )
77
- extract_dir = file_handler.extract_zip(uploaded_file)
78
- return waifuc.source.LocalSource(extract_dir)
79
- else:
80
- source_cls = next(cls for cls in self.source_classes if cls.__name__ == selected_source)
81
- source_params = {k: v for k, v in params.items() if k in [p.name for p in self.get_source_params(selected_source)]}
82
- if "tags" in source_params:
83
- source_params["tags"] = [tag.strip() for tag in source_params["tags"].split(',')]
84
- if "refresh_token" in source_params and not source_params["refresh_token"]:
85
- source_params["refresh_token"] = self.config_manager.get_config("pixiv_refresh_token")
86
- return source_cls(**source_params)
 
1
+ import inspect
2
+ import waifuc.source
3
+ import gradio as gr
4
+ from .config_manager import ConfigManager
5
+
6
+ class SourceManager:
7
+ def __init__(self, config_manager: ConfigManager):
8
+ self.config_manager = config_manager
9
+ self.source_classes = [
10
+ cls for name, cls in inspect.getmembers(waifuc.source, inspect.isclass)
11
+ if name.endswith("Source") and not inspect.isabstract(cls)
12
+ ]
13
+ self.source_names = [cls.__name__ for cls in self.source_classes]
14
+
15
+ def get_source_params(self, selected_source):
16
+ source_cls = next(cls for cls in self.source_classes if cls.__name__ == selected_source)
17
+ sig = inspect.signature(source_cls.__init__)
18
+ return [p for p in sig.parameters.values() if p.name != 'self']
19
+
20
+ def create_param_inputs(self):
21
+ params = {}
22
+ for source in self.source_names:
23
+ if source == "LocalSource":
24
+ params[source] = {
25
+ "file": gr.File(
26
+ label="Upload ZIP file" if self.config_manager.get_config("language") == "en" else "上传zip文件",
27
+ visible=False
28
+ )
29
+ }
30
+ else:
31
+ source_cls = next(cls for cls in self.source_classes if cls.__name__ == source)
32
+ sig = inspect.signature(source_cls.__init__)
33
+ for param in sig.parameters.values():
34
+ if param.name != 'self':
35
+ if param.name == "refresh_token":
36
+ params.setdefault(source, {})[param.name] = gr.Textbox(
37
+ label="Pixiv Refresh Token" if self.config_manager.get_config("language") == "en" else "Pixiv刷新令牌",
38
+ type="password",
39
+ visible=False,
40
+ value=self.config_manager.get_config("pixiv_refresh_token"),
41
+ info="Set in Config tab or here" if self.config_manager.get_config("language") == "en" else "在配置选项卡或此处设置"
42
+ )
43
+ elif param.name == "num_items":
44
+ params.setdefault(source, {})[param.name] = gr.Number(
45
+ label="Number of Items" if self.config_manager.get_config("language") == "en" else "图片数量",
46
+ visible=False,
47
+ value=self.config_manager.get_config("default_num_items"),
48
+ info="Number of images to collect" if self.config_manager.get_config("language") == "en" else "要收集的图片数量"
49
+ )
50
+ elif param.annotation == list:
51
+ params.setdefault(source, {})[param.name] = gr.Textbox(
52
+ label=param.name,
53
+ placeholder="Comma-separated tags, e.g., tag1,tag2" if self.config_manager.get_config("language") == "en" else "逗号分隔的标签,例如:tag1,tag2",
54
+ visible=False
55
+ )
56
+ elif param.annotation == int:
57
+ params.setdefault(source, {})[param.name] = gr.Number(
58
+ label=param.name,
59
+ visible=False
60
+ )
61
+ else:
62
+ params.setdefault(source, {})[param.name] = gr.Textbox(
63
+ label=param.name,
64
+ visible=False
65
+ )
66
+ return params
67
+
68
+ def instantiate_source(self, selected_source, params, file_handler):
69
+ if selected_source == "LocalSource":
70
+ uploaded_file = params.get("file", None)
71
+ if not uploaded_file:
72
+ raise ValueError(
73
+ "Please upload a ZIP file for LocalSource" if self.config_manager.get_config("language") == "en" else
74
+ "请上传LocalSource的zip文件"
75
+ )
76
+ extract_dir = file_handler.extract_zip(uploaded_file)
77
+ return waifuc.source.LocalSource(extract_dir)
78
+ else:
79
+ source_cls = next(cls for cls in self.source_classes if cls.__name__ == selected_source)
80
+ source_params = {k: v for k, v in params.items() if k in [p.name for p in self.get_source_params(selected_source)]}
81
+ if "tags" in source_params:
82
+ source_params["tags"] = [tag.strip() for tag in source_params["tags"].split(',')]
83
+ if "refresh_token" in source_params and not source_params["refresh_token"]:
84
+ source_params["refresh_token"] = self.config_manager.get_config("pixiv_refresh_token")
85
+ return source_cls(**source_params)