CLI program for sending one-off requests to the VTube Studio API

Overview

vtubestudio-cli (vts)

CLI program for sending one-off requests to the VTube Studio API. It connects to the websocket, authenticates, performs one or two other requests, and then disconnects and exits.

The primary use case is to do infrequent actions such as triggering hotkeys or registering custom parameters, without needing to establish a long-running websocket connection.

For more complex tasks, you might want to look at client libraries like vtubestudio-rs (the Rust library that this program uses under the hood).

Download

Check the releases page to download prebuilt binaries for your platform.

Otherwise you can use cargo install vtubestudio-cli or build it manually from this repo using cargo build --release.

Initialization

vts reads auth token info from a JSON config file whose default location depends on platform.

To generate the config in the default location, you can run:

vts config init

This will register the plugin with the VTube Studio API (the user will get a pop-up in the app asking for confirmation) and save the token for use in future calls. The plugin name and developer name can be customized with --plugin-name and --developer-name, respectively.

Config file location

By default, the config file can be found at:

  • Windows: %USERPROFILE%\AppData\Roaming\walfie\vtubestudio-cli\config.json
  • macOS: $HOME/Library/Application Support/com.github.walfie.vtubestudio-cli/config.json
  • Linux: $XDG_CONFIG_DIR/vtubestudio-cli/config.json or $HOME/.config/vtubestudio-cli/config.json

This path can be overridden by setting the VTS_CONFIG environment variable or passing the --config-file flag.

You can also run vts config path to show the path to the config, or vts config show to show the contents of the config file.

Usage

Hotkeys

  • List hotkeys

    vts hotkeys list
  • Trigger hotkey by id

    vts hotkeys trigger e50ef5139b114d63af342eb65072a5e3
  • Trigger hotkey by name

    vts hotkeys trigger --name MyHotkeyName

Artmeshes

  • List artmeshes

    vts artmeshes list
  • Tint artmesh (rainbow)

    vts artmeshes tint --rainbow --duration 5s --tag-contains shirt sleeves

    VTube Studio resets artmesh tints when the plugin disconnects. Since this CLI program normally disconnects immediately after executing commands (which would otherwise reset the tint), the ---duration flag adds a delay afterwards, to keep the tint active.

  • Tint artmesh (hex color)

    vts artmeshes tint --color ff0000 --duration 5s --tag-contains eye

    The hex color also supports alpha, so values like ff0000aa are also valid.

Params

  • Create parameter

    vts params create MyParameterName --default 0 --min 0 --max 50
  • Inject parameter value

    vts params inject MyParameterName 5
  • Get value of parameter

    vts params get MyParameterName

Models

  • List models

    vts models list
  • Load model by ID

    vts models load 8caf15fa0c664f489873386e43835a7f
  • Load model by name

    vts models load --name Akari
  • Move model

    vts models move --relative --duration 0.5s --rotation 180

Others

vts --help
You might also like...
A Python package written in Rust for email verification without sending any emails.

PyRustify PyRustify is a Python package written in Rust that verifies the email addresses. Features Feature Description Syntax validation Checks if th

Shell scripting that will knock your socks off
Shell scripting that will knock your socks off

atom Shell scripting that will knock your socks off. NOTE: Click the image above for a video demonstration.

An easy-to-use TUI crate for Rust, based off of the Elm architecture.

Rustea An easy-to-use TUI crate for Rust, based off of the Elm architecture. This is a re-implementation of Go's Tea, created by TJ Holowaychuk. Featu

Minimal server (with maximal security) for turning off an X10-controlled fan over HTTP

"Fan Remote" A self-contained Rust binary to expose a single X10 command (turn off that fan) as an HTML form button. In its current form, it's highly

Following "ZK HACK III - Building On-chain Apps Off-chain Using RISC Zero"

RISC Zero Rust Starter Template Welcome to the RISC Zero Rust Starter Template! This template is intended to give you a starting point for building a

🎨✨ Show off your soothing color palette
🎨✨ Show off your soothing color palette

🎨 Show off your soothing color palette ✨ Palettes Β· install Β· contribute Β· Gratitute 🎨 Palettes Rust C Lua Ruby Go sh js πŸš€ install Installing this

Components of Fornjot that are no longer actively maintained. Pull requests still welcome!

Fornjot - Extra Components About These are extra components from the Fornjot repository, that are no longer actively maintained. Fornjot's goal was to

This is an example Nostr rust project to enable '402 Payment Required' responses for requests to paid content.

Nostr Paywall Example This is an example Nostr rust project to enable 402 Payment Required responses for requests to paid content. To prove payment, a

All in One AI Chat Tool( GPT-4 / GPT-3.5 /OpenAI API/Azure OpenAI)
All in One AI Chat Tool( GPT-4 / GPT-3.5 /OpenAI API/Azure OpenAI)

WeChatAI Create All in One personal AI chat assistant English | 中文介绍 This project is not for reward and profit, only used for personal Screenshot Supp

Comments
  • Add item commands and add new flags to existing ones

    Add item commands and add new flags to existing ones

    • Adds commands:

      • vts items list
      • vts items load
      • vts items unload
      • vts items move
      • vts items animation
      • vts artmeshes select (usable on VTS beta branch)
    • vts params inject accepts an --add flag to use add mode instead of the default set mode.

    • vts hotkeys list accepts a --live2d-file argument to get hotkeys for a Live2D item.

    • vts hotkeys trigger accepts a --item argument to trigger a hotkey for a specific item instance.

    opened by walfie 0
Releases(v0.4.0)
Owner
null
πŸ’« This program allows you to do requests in Rust without reqwest !

Zapros ?? This program allows you to do requests in Rust without reqwest ! Usage : Get use crate::http_client::HttpClient; use crate::http_client::Htt

zqo 4 Aug 18, 2023
dhcpm is a CLI tool for constructing & sending DHCP messages

dhcpm Sponsor Thank you to Bluecat for sponsoring this work! dhcpm leverages dhcproto check that out for the DHCP protocol. About A cli tool (and dhcp

Evan Cameron 12 Mar 28, 2022
Simple but convenient CLI-based Matrix client app for sending and receiving (in Rust)

matrix-commander-rs simple but convenient CLI-based Matrix client app for sending and receiving Help create this Rust program! This project is current

null 19 Dec 30, 2022
simple but convenient CLI-based Nostr client app for following users and sending DMs

nostr-commander-rs TLDR: simple but convenient CLI-based Nostr client app for publishing, sending DMs, as well as following users and channels nostr-c

null 18 Dec 30, 2022
Use asynchronous api requests in conjunction with yew's suspense feature

Yew API Hook Use asynchronous api requests in conjunction with yew's suspense feature Usage #[function_component] fn App() -> Html { html! {

Mara Schulke 3 Jan 15, 2023
Use Git installed in Bash on Windows/Windows Subsystem for Linux (WSL) from Windows and Visual Studio Code (VSCode)

WSLGit This project provides a small executable that forwards all arguments to git running inside Bash on Windows/Windows Subsystem for Linux (WSL). T

A. R. S. 1.1k Jan 3, 2023
A visual studio code's workspaces organizer written in Rust

ruscode A visual studio code's workspaces organizer written in Rust Supports Linux, and Windows. What is a workspaces organizer? After months of or ev

ζ™§ζš 8 Dec 15, 2022
πŸ—„οΈ A simple (and safe!) to consume history of Client and Studio deployment versions.

??️ Roblox Version Archive A simple (and safe!) to consume history of Client and Studio deployment versions. About Parsing Roblox's DeployHistory form

Brooke Rhodes 4 Dec 28, 2022
Command-line HTTP client for sending a POST request to specified URI on each stdin line.

line2httppost Simple tool to read lines from stdin and post each line as separate POST request to a specified URL (TCP connection is reused though). G

Vitaly Shukela 3 Jan 3, 2023
Core Lightning plugin for sending zap (NIP-57) notes

Core Lightning plugin for sending zap events You can add the plugin by copying it to CLN's plugin directory or by adding the following line to your co

null 8 Mar 13, 2023