From a1164ade518817463d243cf5c671859822367fbe Mon Sep 17 00:00:00 2001 From: misyaguziya <53165965+misyaguziya@users.noreply.github.com> Date: Mon, 28 Oct 2024 23:06:40 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B[bugfix]=20Model=20:=20VRChat?= =?UTF-8?q?=E6=9C=AA=E8=B5=B7=E5=8B=95=E6=99=82=E3=81=ABOSCQuery=E3=82=92?= =?UTF-8?q?=E8=B5=B7=E5=8B=95=E3=81=95=E3=81=9B=E3=82=8B=E3=81=A8=E3=82=A8?= =?UTF-8?q?=E3=83=A9=E3=83=BC=E3=81=8C=E7=99=BA=E7=94=9F=E3=81=99=E3=82=8B?= =?UTF-8?q?=E5=95=8F=E9=A1=8C=E3=82=92=E5=9B=9E=E9=81=BF=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src-python/model.py | 4 ---- src-python/models/osc/osc_tools.py | 37 +++++++++++++++++++----------- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/src-python/model.py b/src-python/model.py index 8f4a68a9..11091d60 100644 --- a/src-python/model.py +++ b/src-python/model.py @@ -1,17 +1,13 @@ import gc -import tempfile -from zipfile import ZipFile from subprocess import Popen from os import makedirs as os_makedirs from os import path as os_path -from shutil import copyfile from datetime import datetime from logging import getLogger, FileHandler, Formatter, INFO from time import sleep from queue import Queue from threading import Thread from requests import get as requests_get -import webbrowser from typing import Callable from flashtext import KeywordProcessor diff --git a/src-python/models/osc/osc_tools.py b/src-python/models/osc/osc_tools.py index 67ceee5c..52b65621 100644 --- a/src-python/models/osc/osc_tools.py +++ b/src-python/models/osc/osc_tools.py @@ -1,11 +1,9 @@ from time import sleep -from pythonosc import osc_message_builder -from pythonosc import udp_client -from pythonosc import dispatcher -from pythonosc import osc_server +from pythonosc import osc_message_builder, udp_client, dispatcher, osc_server from tinyoscquery.queryservice import OSCQueryService from tinyoscquery.query import OSCQueryBrowser, OSCQueryClient from tinyoscquery.utility import get_open_udp_port, get_open_tcp_port +from psutil import process_iter # send OSC message typing def sendTyping(flag=False, ip_address="127.0.0.1", port=9000): @@ -65,19 +63,30 @@ def getOSCParameterValue(address, server_name="VRChat-Client"): pass return value +def checkVRChatRunning() -> bool: + _proc_name = "VRChat.exe" + return _proc_name in (p.name() for p in process_iter()) + def receiveOscParameters(dict_filter_and_target, ip_address="127.0.0.1", title="VRCT"): - osc_port = get_open_udp_port() - http_port = get_open_tcp_port() - osc_dispatcher = dispatcher.Dispatcher() - for filter, target in dict_filter_and_target.items(): - osc_dispatcher.map(filter, target) - osc_udp_server = osc_server.ThreadingOSCUDPServer((ip_address, osc_port), osc_dispatcher) + while True: + if not checkVRChatRunning(): + sleep(1) + else: + try: + osc_port = get_open_udp_port() + http_port = get_open_tcp_port() + osc_dispatcher = dispatcher.Dispatcher() + for filter, target in dict_filter_and_target.items(): + osc_dispatcher.map(filter, target) + osc_udp_server = osc_server.ThreadingOSCUDPServer((ip_address, osc_port), osc_dispatcher) - osc_client = OSCQueryService(title, http_port, osc_port) - for filter, target in dict_filter_and_target.items(): - osc_client.advertise_endpoint(filter) + osc_client = OSCQueryService(title, http_port, osc_port) + for filter, target in dict_filter_and_target.items(): + osc_client.advertise_endpoint(filter) - osc_udp_server.serve_forever() + osc_udp_server.serve_forever() + except Exception: + pass if __name__ == "__main__": osc_parameter_prefix = "/avatar/parameters/"