Vcot twitch連携メモ
twitchで「!Vcot ○○」と発言すると、「発言者:○○」がVcotに入力される
っていうのを力業で作りました。
名前は特にないです。コメントが打ち込まれてからだいたい15秒です。
使用の注意
alertが3回出る。(今は2回)
最悪の場合データの上書き発生がする(上書き+保存+閉じるの工程あり)
Vcotのウィンドウの真ん中下当たりを1回クリックの可能性
(Vcotの下のウィンドウにボタンがある場合それが押される)
クリップボードを使用するのでそれまでのクリップボードが消える
Vcotを動かすたびにお金がかかる(Vcot自体の仕様)
マウスキーボードの再現マクロなので何か作業しながらはできない
(カーソルがズレるとやばい)
あらゆる損失に私は一切責任を取りません。自己責任で。
必要なソフト
以下のソフトをPCに入れます。
Vcot
使用にはchatGPTのAPI料金を支払う必要があります。
たぬえさ3
トリガー発火してホットキーを入力させます。
kmmac72
コメントをコピしてVcotにペする。という動作を半自動化するマクロを走らせます。
Chatty
発火した瞬間のコメントログを出力させて利用します。
初回準備
Vcot
マニュアル通りでOK.
特記:表示キャラクターが小さすぎる、中央部分に透明部分がある、座る・寝そべるなどの動作を入れると失敗しやすいです。
たぬえさ3
イベント設定でトリガーを「!Vroid」にします。
アクションをキー入力で「Shift+ctrl+F12」が発火するようにします。
kmmac72
マクロを登録して、常駐モードを出せるように設定します。
KMacro.HOTをエディタで開いて、「Shift+ctrl+F12」でマクロが発火できるように設定します。
hotkey=[F12] Ctrl Shift : ホットキーのテストです。Message コマンドでメッセージを表示します
;Message "" "Ctrl+Shift+F12 が押されました"
include v_vcot.mac
v_vcot.macというマクロを「Shift+ctrl+F12」で発火する例
詳細はこっち見てください。
Chatty
初期設定は案内通りに。
自分のチャンネルに接続できるようになったら以下を変更します。
main-setting からmain-languageを日本語に変更したものとします。
Chettyを閉じる(Exit)のホットキーを作成する(ctrl+delete)
ウィンドウ名を最簡素なものにする(Chetty)
メインー設定からその他-hotkey
EXIT Chattyは初期設定にはないので、右上の「+」から新設定。
範囲は「App」にします。
ビュー-オプション-タイトルバーでウィンドウ名を変更。
初期でついているチェック5つを全て外して
下の簡易タイトル表示にチェックを入れます。
またログの出力場所を確認しておきます。
メイン-設定-Chat-Log to file-その他の設定領域の「開く」
ボタンを押すとそのディレクトリが出ます。
デフォだとCドライブ/ユーザー名/.chatty/logsにチャンネル名ごとにログが作成されています。
設定変更はChattyを閉じないと反映されない場合があります。
その他
Chattyのログ(.log)を.txtに書き換える処理のため、中身が書いてある適当なtxtファイル(Shift-JIS)を作成します。
特にこだわりがなければ以下の方法で。
.logをエクスプローラー上でコピペ
コピペした方の拡張子を.logから.txtに書き換え
.txtにした方をVScodeなどで開き、UTF-8からShift-JISに書き換えて保存して閉じる
このとき、文字化けが残らないようにする。重要。
これにUTF-8からShift-JISに変換方法があります。
初回準備2
kmmac72で扱うマクロです。
これをコピペして指定箇所を変えると使えます。
序盤のSET4行を書き換えて使用してください。
それぞれ
SET %chara Vcotのキャラクター名
SET %Chatty Chattyの起動ファイルがある箇所への絶対参照
SET %loglog Chattyが出力する.logファイルがある箇所への絶対参照
SET %txtlog %loglogの中身を上書き保存する.txtファイルがある箇所への絶対参照
です。キャラクター名は
Vcotのフォルダ内の「VRMAvater」や「PNGAvatar」フォルダ内で使用されているキャラクター名です。
テスト不足のα版なので注意してください。
v_vcot.MAC
DIM %hoge %fuga %piyo %i %j %hoge2 %nm
DIM %chara %Chatty %loglog %txtlog
SET %chara 小春六花
SET %Chatty "D:/././Chatty_0.25_win_standalone/Chatty.exe"
SET %loglog "C:/././.chatty/logs/#k171s171y230.log"
SET %txtlog "C:/././.chatty/logs/#k171s171y230.txt"
;Vcotを始めていいかの確認
message %0 (& "Vcotに話させていい?\n「はい」を押したら絶対に動かないでください。");YES,NO,CANCELが文字列で返される
IF (<> %0 YES) then
message "" 中断します。
END
ENDIF
;キー入力停止
blockinput 10000
;Chattyが起動しているか確認
SET %hoge Chatty
SET %fuga (find-window %hoge)
IF (not %fuga) then
;キー入力停止解除
blockinput 0
message "" Chattyを起動してください。終了します。
END
ENDIF
;Chattyをctrl+delで閉じる
ACTIVATE-WINDOW %hoge
KEY [CTRL]++ [DEL] [CTRL]--
DELAY 2000 500
;.logを開いてコピー閉じ
SHELL %loglog Else
DELAY 1000 500
;アクティブウィンドウの左上を原点にする。
SETORIGIN (getwindowpos)
LCLICK (100,100);
KEY [CTRL]++ A C [CTRL]--
DELAY 500
KEY [CTRL]++ W [CTRL]--
DELAY 500
;.txtを開いて貼り付け保存閉じ
SHELL %txtlog Else
DELAY 1000 500
SETORIGIN (getwindowpos)
LCLICK (100,100);
KEY [CTRL]++ A V S [CTRL]--
DELAY 500
;キー入力停止解除
;blockinput 0
;message "" "保存エラーが終わったら押す"
;キー入力停止
;blockinput 6000
KEY [CTRL]++ W[CTRL]--
;================================================================================================================================
;.txtからreadで読込
open %txtlog input 1
:label
SET %59 %60
SET %60 %61
SET %61 %62
SET %62 %63
read 1 %63
if (= (eof 1) "False") goto :label
close 1
;Vcotの行を探し出す
;%59-%63の中に「!Vcot」が含まれる行を探し出す
;最後行を優先して抽選する。
IF (in !Vcot %63)then
SET %58 %63
ELSEIF (in !Vcot %62) then
SET %58 %62
ELSEIF (in !Vcot %61) then
SET %58 %61
ELSEIF (in !Vcot %60) then
SET %58 %60
ELSEIF (in !Vcot %59) then
SET %58 %59
ENDIF
IF (= %58 ) then
;キー入力停止解除
blockinput 0
message "" Vcotが含まれていません。終了します。
END
ENDIF
;発言者の名前を取り出す
SET %i (+ (pos < %58) 2);名前先頭の~を省く
SET %j (- (pos > %58) %i)
;i 文字目から j 文字を返す
SET %nm (substr %58 %i %j)
;「!Vcot」が含まれるまでの数値を出す
SET %j (pos !Vcot %58)
SET %i (+ %j 5);「!Vcot」が5文字
SET %j (len %58)
;i 文字目から j 文字を返す
SET %58 (substr %58 %i %j)
;空白を整形
SET %58 (trim %58)
;Vcot以降の文字を入れる
SET %piyo (& %nm : %58)
;================================================================================================================================
;Chattyを再起動
SHELL %Chatty Else
DELAY 2000 500
;キー入力停止解除
blockinput 0
;メッセージの確認(送って大丈夫なものか)
message %0 (& メッセージ確認: %piyo);YES,NO,CANCELが文字列で返される
IF (<> %0 YES) then
message "" 中断します。
END
ENDIF
;================================================================================================================================
;===Vcot操作======
;キー入力停止
blockinput 6000
SET %hoge (& (ぶいこっと ) %chara)
SET %fuga (find-window %hoge)
;Vcotが開かれているかを確認
IF (not %fuga) then
;キー入力停止解除
blockinput 0
message "" Vcotが起動してないかキャラが違うよ!終了するね。
END
ENDIF
;アクティブにする
ACTIVATE-WINDOW %hoge
;アクティブウィンドウの左上を原点にする。
SETORIGIN (getwindowpos)
SET %0 (div 3840 2 )
SET %1 (+ (div 2160 2 ) -100);中心が待機モーションでズレるので股間に合わせる
;一度触れてフキダシを出す。触れる箇所が透明だった場合別の場所を指すようにする。
LCLICK (& %0 "," %1)
DELAY 800
GETTITLE %hoge2
IF (<> %hoge %hoge2) then
;アクティブにする
ACTIVATE-WINDOW %hoge
SET %1 (+ (div 2160 2 ) 150);股間にヒットしない場合うつ伏せなので足元を狙う
LCLICK (& %0 "," %1)
ENDIF
DELAY 500
;位置調整
SET %0 (+ (div 3840 2 ) -500)
SET %1 (+ (div 2160 2 ) 200)
;フキダシが右側の時の処理
SET %2 (token (getwindowpos) ,)
if (< %2 -1350) SET %0 (+ (div 3840 2 ) 200)
LCLICK (& %0 "," %1)
;キー入力停止解除
blockinput 0
SEND %piyo
KEY [RET]
END
マクロ解説
Alert1 マクロを開始していいかの確認
Chattyが起動していない場合終了
Chattyを閉じる(閉じるとlogが記録&i/oエラー避け)
.logをメモ帳で開いて.txtに上書き貼り付け(UTF-8文字化け回避)
保存のとき失われる文字があるとエラーが出るのでOK押す
(Alert2 ) .txtに文字化けが入っている場合のwindowsエラー待ち用
文字化けが入ってなければいらないです。上は;でコメントアウト。
.txtから1行ずつ内容を読み込み。最後の5行の中から「!Vroid」のある行を検出する
コメントを装飾し、「発言者:内容」に変形する
Chattyを再起動する
Alert3 コメント内容の確認。よければ進む。
Vcotの起動確認、キャラクター名確認
キャラクターをクリックしてフキダシを表示させる
このクリックが透明箇所をすると失敗します。
入力箇所をクリックし、装飾コメントを送信する。
わかっている不具合
たまにChattyが複数起動する場合があります。
.log-nというファイルが増えます。
Chattyを全て閉じて.log-nなど増殖したものを削除でOK。
blockinputはPCの機種によって機能しません。
マクロで自動操作中、キーボードマウスが動かせます。
最初のAlert以降、選択肢を押す以外絶対に動かさない。
kmmac72は処理の終了を感知できません。
DELAYというもので処理を遅らせて処理終了を疑似的に行っています
PCの性能で必要なDELAYの数値は増減します。
処理が終わらないうちに次の処理が始まると上手く行きません。
挙動がおかしいと感じたら「Esc」キーを長押ししてください。止まります。
モニターサイズが異なる場合のテストしてません。
;位置調整 の-500とか200を修正するなど、自分でマクロを書き換える必要があるかもしれません。
その他準備
これら機能を使うためには、必要なソフトが全て起動していないと駄目。
なので、Vcotのフォルダ内の「StartUp」にVcot以外のソフトのショートカットを入れるのをオススメします。
Vcotを起動したときに同時に全て起動します。
常駐的な使い方
必要なソフト項目全てを起動します。
OBSなど配信ソフトの画面上にVcotを出します。
kmmac72を常駐モードにします。
配信を始めたら、「!Vcot」コマンドが入力されるのを待ちます。
!Vcotコマンドが入力されると、たぬえさ3がホットキーを入力してkmmac72のマクロを起動します。
「はい」を押したらマクロが始まります。エンターキーでも「はい」です。
裏で何か走らせていたり、マウスキーボードを動かし続けないといけない状態のときは使用しないでください。
「いいえ」、またはキャンセルで中止できます。
中止のとき、コメントはストックしていないので、再度コメントするようにお願いしてください。
「はい」を押しても必要ソフトが起動していない場合中止します。
なお、クリップボードを使っているので、途中でクリップボードを上書きすると失敗します。
キャンセルをしたとき、Chattyが落ちたままになることがあるので、注意してください。
要は
発火したら、エンターを2回押すと15秒ぐらいでコメントをVcotに送ることができます。
終わり