import os
PIPE_PATH = r"\\.\pipe\sp_remote_control"
def send_sp_command(cmd: str) -> str:
try:
with open(PIPE_PATH, "r+b", buffering=0) as pipe:
pipe.write(cmd.encode("utf-8"))
# Читаем ответ от Soundpad
response = pipe.read(65536).decode("utf-8", errors="replace")
return response
except FileNotFoundError:
return "[!] Ошибка: Soundpad не запущен."
except Exception as e:
return f"[!] Ошибка связи: {e}"
if __name__ == "__main__":
print("[*] Проверка соединения с Soundpad...")
status = send_sp_command("IsAlive()")
print(f"Статус: {status}")
if status.startswith("R-200"):
version = send_sp_command("GetVersion()")
print(f"Версия программы: {version}")
print("\n[*] Запрос дерева категорий (GetCategories)...")
xml_data = send_sp_command("GetCategories(true, false)")
# Сохранение дампа в файл
output_file = "soundpad_dump.xml"
with open(output_file, "w", encoding="utf-8") as f:
f.write(xml_data)
print("\n=== СОДЕРЖИМОЕ XML ===")
print(xml_data[:2000]) # Вывод первых 2000 символов в консоль
if len(xml_data) > 2000:
print("\n... [текст обрезан для консоли]")
print(f"\n[+] Полный XML-дамп успешно сохранен в файл: {os.path.abspath(output_file)}")