🐛[bugfix] Model : VRChat未起動時にOSCQueryを起動させるとエラーが発生する問題を回避するように変更

This commit is contained in:
misyaguziya
2024-10-28 23:06:40 +09:00
parent bd0431f79c
commit a1164ade51
2 changed files with 23 additions and 18 deletions

View File

@@ -1,17 +1,13 @@
import gc import gc
import tempfile
from zipfile import ZipFile
from subprocess import Popen from subprocess import Popen
from os import makedirs as os_makedirs from os import makedirs as os_makedirs
from os import path as os_path from os import path as os_path
from shutil import copyfile
from datetime import datetime from datetime import datetime
from logging import getLogger, FileHandler, Formatter, INFO from logging import getLogger, FileHandler, Formatter, INFO
from time import sleep from time import sleep
from queue import Queue from queue import Queue
from threading import Thread from threading import Thread
from requests import get as requests_get from requests import get as requests_get
import webbrowser
from typing import Callable from typing import Callable
from flashtext import KeywordProcessor from flashtext import KeywordProcessor

View File

@@ -1,11 +1,9 @@
from time import sleep from time import sleep
from pythonosc import osc_message_builder from pythonosc import osc_message_builder, udp_client, dispatcher, osc_server
from pythonosc import udp_client
from pythonosc import dispatcher
from pythonosc import osc_server
from tinyoscquery.queryservice import OSCQueryService from tinyoscquery.queryservice import OSCQueryService
from tinyoscquery.query import OSCQueryBrowser, OSCQueryClient from tinyoscquery.query import OSCQueryBrowser, OSCQueryClient
from tinyoscquery.utility import get_open_udp_port, get_open_tcp_port from tinyoscquery.utility import get_open_udp_port, get_open_tcp_port
from psutil import process_iter
# send OSC message typing # send OSC message typing
def sendTyping(flag=False, ip_address="127.0.0.1", port=9000): def sendTyping(flag=False, ip_address="127.0.0.1", port=9000):
@@ -65,19 +63,30 @@ def getOSCParameterValue(address, server_name="VRChat-Client"):
pass pass
return value 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"): def receiveOscParameters(dict_filter_and_target, ip_address="127.0.0.1", title="VRCT"):
osc_port = get_open_udp_port() while True:
http_port = get_open_tcp_port() if not checkVRChatRunning():
osc_dispatcher = dispatcher.Dispatcher() sleep(1)
for filter, target in dict_filter_and_target.items(): else:
osc_dispatcher.map(filter, target) try:
osc_udp_server = osc_server.ThreadingOSCUDPServer((ip_address, osc_port), osc_dispatcher) 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) osc_client = OSCQueryService(title, http_port, osc_port)
for filter, target in dict_filter_and_target.items(): for filter, target in dict_filter_and_target.items():
osc_client.advertise_endpoint(filter) osc_client.advertise_endpoint(filter)
osc_udp_server.serve_forever() osc_udp_server.serve_forever()
except Exception:
pass
if __name__ == "__main__": if __name__ == "__main__":
osc_parameter_prefix = "/avatar/parameters/" osc_parameter_prefix = "/avatar/parameters/"