doc ワークフローの追加・READMEの修正
This commit is contained in:
@@ -115,3 +115,9 @@ YourNameHere
|
|||||||
|
|
||||||
この README は、まず使い方が分かることを優先して簡単にまとめています。
|
この README は、まず使い方が分かることを優先して簡単にまとめています。
|
||||||
細かい内部仕様が必要な場合は、ソースコードと `config/*.example.*` を見てください。
|
細かい内部仕様が必要な場合は、ソースコードと `config/*.example.*` を見てください。
|
||||||
|
|
||||||
|
## 詳しい資料
|
||||||
|
|
||||||
|
- [設計書](doc/design.md)
|
||||||
|
- [シーケンス図](doc/sequence.md)
|
||||||
|
- [ワークフロー](doc/workflow.md)
|
||||||
|
|||||||
74
doc/design.md
Normal file
74
doc/design.md
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
# VRC_OSC 設計書
|
||||||
|
|
||||||
|
## 目的
|
||||||
|
|
||||||
|
VRC_OSC は、VRChat の状態をきっかけにして、Discord のミュート操作、ログ通知、OCR、翻訳をまとめて扱うためのツールです。
|
||||||
|
|
||||||
|
## 全体構成
|
||||||
|
|
||||||
|
- `src/app.py`
|
||||||
|
- 起動処理の入口
|
||||||
|
- OSC パラメータを受け取って各機能に振り分ける
|
||||||
|
- `src/osc/gateway.py`
|
||||||
|
- OSC の受信とログ出力
|
||||||
|
- `src/discord_control/actions.py`
|
||||||
|
- Discord のミュート切り替え
|
||||||
|
- `src/vrc_log/log_actions.py`
|
||||||
|
- VRChat ログの収集、監視、Discord 通知
|
||||||
|
- `src/ocr/ocr_actions.py`
|
||||||
|
- 画面 OCR
|
||||||
|
- `src/translate/translate_actions.py`
|
||||||
|
- OCR 結果の翻訳とコピー
|
||||||
|
- `src/common/config_loader.py`
|
||||||
|
- 設定ファイルの読み込み
|
||||||
|
|
||||||
|
## 主要な機能
|
||||||
|
|
||||||
|
### 1. Discord ミュート連動
|
||||||
|
|
||||||
|
VRChat 側の `DiscordSend` パラメータを受けると、Discord のミュートを切り替えます。
|
||||||
|
ミュート操作は、Discord ウィンドウがあればそこに対して行い、見つからない場合はブラウザ版 Discord も探します。
|
||||||
|
|
||||||
|
### 2. VRC ログ通知
|
||||||
|
|
||||||
|
`vrc_log` パラメータでログ監視の開始・停止を切り替えます。
|
||||||
|
監視中は VRChat のログファイルを読み、入室や退室、ワールド変更を検出して、必要なら Discord Webhook に通知します。
|
||||||
|
|
||||||
|
### 3. OCR
|
||||||
|
|
||||||
|
`ocrEnabled` パラメータを受けると、VRChat 画面を読み取って OCR を実行します。
|
||||||
|
結果は `runtime/` に記録されます。
|
||||||
|
|
||||||
|
### 4. 翻訳
|
||||||
|
|
||||||
|
`translation` パラメータを受けると、OCR を実行してから翻訳します。
|
||||||
|
翻訳結果はクリップボードへコピーし、あわせて `runtime/` に保存します。
|
||||||
|
|
||||||
|
## 設定
|
||||||
|
|
||||||
|
設定は `config/` に置きます。
|
||||||
|
|
||||||
|
- `config/config.toml`
|
||||||
|
- 自分の名前、guest 名簿、OCR 設定、ログ通知の設定
|
||||||
|
- `config/secrets.toml`
|
||||||
|
- Discord Webhook URL、VRChat の認証情報
|
||||||
|
- `config/guests.txt`
|
||||||
|
- guest として扱う名前を 1 行ずつ書くファイル
|
||||||
|
|
||||||
|
## データの流れ
|
||||||
|
|
||||||
|
1. `src/app.py` が OSC サーバーを起動する
|
||||||
|
2. VRChat からパラメータが届く
|
||||||
|
3. 受け取ったパラメータに応じて、Discord ミュート、ログ監視、OCR、翻訳の処理に分岐する
|
||||||
|
4. 必要に応じて Discord、クリップボード、`runtime/`、WebHook に反映する
|
||||||
|
|
||||||
|
## 保存先
|
||||||
|
|
||||||
|
- `runtime/runtime.log`
|
||||||
|
- `runtime/latest_ocr.png`
|
||||||
|
- `runtime/latest_screenshot.png`
|
||||||
|
|
||||||
|
## 補足
|
||||||
|
|
||||||
|
この設計書は、ソースコードを見なくても全体像が分かることを目的にしています。
|
||||||
|
細かな判定ルールは `src/vrc_log/log_actions.py` と `src/translate/translate_actions.py` を参照してください。
|
||||||
60
doc/sequence.md
Normal file
60
doc/sequence.md
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
# シーケンス図
|
||||||
|
|
||||||
|
## 1. Discord ミュート連動
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
sequenceDiagram
|
||||||
|
participant VRChat
|
||||||
|
participant App as VRC_OSC
|
||||||
|
participant Discord
|
||||||
|
participant VRChatWin as VRChat Window
|
||||||
|
|
||||||
|
VRChat->>App: DiscordSend パラメータ ON
|
||||||
|
App->>Discord: Discord ウィンドウを探す
|
||||||
|
alt Discord ウィンドウあり
|
||||||
|
App->>Discord: Ctrl+Shift+M を送る
|
||||||
|
else Discord ウィンドウなし
|
||||||
|
App->>Discord: ブラウザ版 Discord を探す
|
||||||
|
App->>Discord: Ctrl+Shift+M を送る
|
||||||
|
end
|
||||||
|
App->>VRChatWin: VRChat に戻す
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2. VRC ログ通知
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
sequenceDiagram
|
||||||
|
participant VRChat
|
||||||
|
participant App as VRC_OSC
|
||||||
|
participant Log as VRChat Log
|
||||||
|
participant Webhook as Discord Webhook
|
||||||
|
|
||||||
|
VRChat->>App: vrc_log ON
|
||||||
|
App->>Log: 最新ログを読む
|
||||||
|
App->>Log: 入室 / 退室 / ワールド変更を解析
|
||||||
|
opt 通知対象あり
|
||||||
|
App->>Webhook: 通知を送る
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3. OCR と翻訳
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
sequenceDiagram
|
||||||
|
participant VRChat
|
||||||
|
participant App as VRC_OSC
|
||||||
|
participant OCR
|
||||||
|
participant Translate
|
||||||
|
participant Clipboard
|
||||||
|
participant Runtime
|
||||||
|
|
||||||
|
VRChat->>App: ocrEnabled または translation ON
|
||||||
|
App->>OCR: 画面を読み取る
|
||||||
|
OCR-->>App: 認識テキスト
|
||||||
|
opt translation ON
|
||||||
|
App->>Translate: 日本語へ翻訳
|
||||||
|
Translate-->>App: 翻訳結果
|
||||||
|
App->>Clipboard: 翻訳文をコピー
|
||||||
|
end
|
||||||
|
App->>Runtime: 結果を保存
|
||||||
|
```
|
||||||
70
doc/workflow.md
Normal file
70
doc/workflow.md
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
# ワークフロー
|
||||||
|
|
||||||
|
## 起動から利用まで
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
A[起動] --> B[config を読む]
|
||||||
|
B --> C[OSC サーバーを起動]
|
||||||
|
C --> D[VRChat を開く]
|
||||||
|
D --> E[ExMenu から機能を選ぶ]
|
||||||
|
E --> F{どの機能か}
|
||||||
|
|
||||||
|
F -->|DiscordSend| G[Discord ミュート操作]
|
||||||
|
F -->|vrc_log| H[VRC ログ監視]
|
||||||
|
F -->|ocrEnabled| I[OCR 実行]
|
||||||
|
F -->|translation| J[OCR + 翻訳]
|
||||||
|
|
||||||
|
G --> K[VRChat に戻る]
|
||||||
|
H --> L[Discord Webhook に通知]
|
||||||
|
I --> M[runtime に保存]
|
||||||
|
J --> N[クリップボードへコピー]
|
||||||
|
J --> M
|
||||||
|
```
|
||||||
|
|
||||||
|
## DiscordSend の流れ
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
A[DiscordSend を受信] --> B[Discord ウィンドウを探す]
|
||||||
|
B --> C{Discord が見つかる?}
|
||||||
|
C -->|はい| D[Ctrl+Shift+M を送る]
|
||||||
|
C -->|いいえ| E[ブラウザ版 Discord を探す]
|
||||||
|
E --> D
|
||||||
|
D --> F[VRChat に戻す]
|
||||||
|
```
|
||||||
|
|
||||||
|
## vrc_log の流れ
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
A[vrc_log を受信] --> B[ログ監視 ON/OFF を切り替える]
|
||||||
|
B --> C{ON か?}
|
||||||
|
C -->|はい| D[最新ログを読む]
|
||||||
|
D --> E[入室 / 退室 / ワールド変更を解析]
|
||||||
|
E --> F{通知対象か?}
|
||||||
|
F -->|はい| G[Discord Webhook に送る]
|
||||||
|
F -->|いいえ| H[保存だけする]
|
||||||
|
C -->|いいえ| I[監視を停止する]
|
||||||
|
```
|
||||||
|
|
||||||
|
## ocrEnabled の流れ
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
A[ocrEnabled を受信] --> B[VRChat 画面を読み取る]
|
||||||
|
B --> C[OCR を実行]
|
||||||
|
C --> D[認識結果を保存]
|
||||||
|
```
|
||||||
|
|
||||||
|
## translation の流れ
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
A[translation を受信] --> B[VRChat 画面を読み取る]
|
||||||
|
B --> C[OCR を実行]
|
||||||
|
C --> D[不要な文字を除去]
|
||||||
|
D --> E[日本語へ翻訳]
|
||||||
|
E --> F[翻訳結果をクリップボードへコピー]
|
||||||
|
E --> G[runtime に保存]
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user