MCPcopy Create free account
hub / github.com/NyarchLinux/DesktopPuppet / Live2DPuppetAvatarHandler

Class Live2DPuppetAvatarHandler

puppet_extension.py:29–270  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

27 }]
28
29class Live2DPuppetAvatarHandler(AvatarHandler):
30 key = "puppet"
31 base_url = "http://127.0.0.1:42943"
32 lockfile = None
33 def __init__(self, settings, path: str):
34 super().__init__(settings, path)
35 self._wait_js = threading.Event()
36 self._motions_raw = []
37 self._expressions_raw = []
38 self.webview_path = os.path.join(path, "avatars", "live2d", "web")
39 self.puppet_path = os.path.join(path, "avatars", "live2d", "DesktopPuppet")
40 self.models_dir = os.path.join(self.webview_path, "models")
41 self._puppet_process = None
42
43 def get_available_models(self):
44 file_list = []
45 for root, _, files in os.walk(self.models_dir):
46 for file in files:
47 if file.endswith('.model3.json') or file.endswith('.model.json'):
48 file_name = file.rstrip('.model3.json').rstrip('.model.json')
49 relative_path = os.path.relpath(os.path.join(root, file), self.models_dir)
50 file_list.append((file_name, relative_path))
51 return file_list
52
53 def get_extra_settings(self) -> list:
54 return [
55 {
56 "key": "model",
57 "title": _("Live2D Model"),
58 "description": _("Live2D Model to use"),
59 "type": "combo",
60 "values": self.get_available_models(),
61 "default": "Arch/arch chan model0.model3.json",
62 "folder": os.path.abspath(self.models_dir),
63 "refresh": lambda x: self.settings_update(),
64 },
65 {
66 "key": "update_model",
67 "title": "Update Puppet Program",
68 "description": "Update Puppet program",
69 "type": "button",
70 "default": "",
71 "label": "Update",
72 "callback": self.update_puppet,
73
74 },
75 {
76 "key": "start_window_server",
77 "title": "Automatically run puppet",
78 "description": "Automatically run puppet window server",
79 "type": "toggle",
80 "default": True
81 },
82 {
83 "key": "fps",
84 "title": _("Lipsync Framerate"),
85 "description": _("Maximum amount of frames to generate for lipsync"),
86 "type": "range",

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected