Загрузка данных


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)}")