# WebSocket APIで新規コメントの取得が不定期

**URL:** <https://forum.onecomme.com/t/topic/1649>\
**Category:** 不具合\
**Created:** [2024 年 5 月 15 日午後 4:26 UTC](https://forum.onecomme.com/t/topic/1649 "2024-05-15T16:26:55Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![ch\_suginami](https://yyz1.discourse-cdn.com/flex031/user_avatar/forum.onecomme.com/ch_suginami/32/1558_2.png) [@ch\_suginami](https://forum.onecomme.com/u/ch_suginami)\
**Post date:** [2024 年 5 月 15 日午後 4:26 UTC](https://forum.onecomme.com/t/topic/1649/1 "2024-05-15T16:26:55Z")

</div>

## 対象

わんコメ

## 利用OS

Windows

## 利用バージョン: Windows、わんコメやOBSのバージョン

Windows: 11  
わんコメ： 5.1.6(5.2-0beta.58でも確認)

## PRO版を利用

していない

## 発生した場所

その他（自作アプリ）

## 発生したURL

[![](https://img.youtube.com/vi/Jyzhs05J1EQ/maxresdefault.jpg "【雑談配信】おはなししよー‼️【#新人Vtuber / 玖蘭はぴせ】") ](https://www.youtube.com/watch?v=Jyzhs05J1EQ)

ライブ配信であれば問わない

## 発生日時

2024/05/15 01:00頃～

## 発生時のスクリーンショット

(なし)

## 内容

お世話になっております。  
質問にするか迷いましたが、いったん不具合で立てさせていただきます。  
自作のアプリ（Python3.10）で、YouTubeのチャット欄をWebSocket APIによって取得し、取得したチャットを加工して別出力する操作をしています。  
このときWebSocket APIを実行し内容を確認していると、画面上ではチャットを受信しているにもかかわらず、WebSocketから新規チャット受信時の"type"が"comments"として全く取得できないことが95％くらいの体感で生じています。  
その時、接続"connected"や"meta"、"pong"は問題なく定期的に取得し、チャット時には"userDatas"も出ますが、"comments"だけ出力がない状態です。  
ただし何らかのきっかけで取得できた場合、その回は問題なくチャットの取得が行われます。

再現方法（Python3.10環境で以下コードを実行）  
`# -_- coding: utf-8 -_-  
import asyncio  
import json  
import websockets

uri = “ws://127.0.0.1:11180/sub”

async def counter():  
async with websockets.connect(uri) as websocket:  
while True:  
raw\_data = await websocket.recv()  
data = json.loads(raw\_data)  
print(data[“type”])

if **name** == ‘ **main** ’:  
asyncio.run(counter())`

このときの出力結果は以下の通りです。  
[log.txt](https://forum.onecomme.com/uploads/short-url/jRUljqqpcIW38yrtgZV9yL5rFN5.txt) (17.5 KB)

もし対応が可能であれば調査をお願いできますでしょうか。

---

<div class="post-metadata">

**Author:** ![ASTIE](https://yyz1.discourse-cdn.com/flex031/user_avatar/forum.onecomme.com/astie/32/58_2.png) [@ASTIE](https://forum.onecomme.com/u/ASTIE)\
**Post date:** [2024 年 5 月 16 日午前 12:20 UTC](https://forum.onecomme.com/t/topic/1649/2 "2024-05-16T00:20:21Z")

</div>

こんにちは

WebSocketAPIはわんコメ内蔵のテンプレートでも同じものを使用しています  
そちらでの動作はいかがでしょうか？

再現方法についてはコードのみででは環境構築のズレが発生するため、サンドボックスサービスなど動作とコードを含めて確認できる環境でご提示いただけますでしょうか

---

<div class="post-metadata">

**Author:** ![ch\_suginami](https://yyz1.discourse-cdn.com/flex031/user_avatar/forum.onecomme.com/ch_suginami/32/1558_2.png) [@ch\_suginami](https://forum.onecomme.com/u/ch_suginami)\
**Post date:** [2024 年 5 月 18 日午前 6:19 UTC](https://forum.onecomme.com/t/topic/1649/3 "2024-05-18T06:19:18Z")

</div>

ご返信ありがとうございます。

遅くなってしまいましたが、こちらで原因など調べて参りました。

結論としてWebSocket APIで"comments"が取得できない理由は、  
「書き出し」をオンにしていないことでした。  
こちらの想定では新規コメント取得の段階でWebSocketの情報も取得できると思っていたのですが、現在の仕様として「書き出し」がオンでないとデータを取得できないみたいです。  
（認識齟齬などありましたらご教授ください）

今回このような質問をさせていただきました背景を説明します。  
わんコメの１番目の枠で取得したチャットに対して、そのチャットを加工して２番目の枠に流し、加工済のチャットのみをOBS画面に出力するアプリを作成していました。  
その際、内容を重複することを避けるため１番目の枠を書き出さない設定にしたところ、データそのものを取得できなかったため今回の質問に至りました。

書き出しオンオフに関係なくWebSocketのデータとして取得できれば嬉しいのですが、現時点では難しいかもしれないので他の方法を模索しようと思います。  
また可能であれば、何かヒントなどありましたら助かります。

いったん、この枠としては閉じていただいて構いません。  
ありがとうございました。

---

<div class="post-metadata">

**Author:** ![ASTIE](https://yyz1.discourse-cdn.com/flex031/user_avatar/forum.onecomme.com/astie/32/58_2.png) [@ASTIE](https://forum.onecomme.com/u/ASTIE)\
**Post date:** [2024 年 5 月 18 日午前 6:45 UTC](https://forum.onecomme.com/t/topic/1649/4 "2024-05-18T06:45:27Z")

</div>

> 結論としてWebSocket APIで"comments"が取得できない理由は、  
> 「書き出し」をオンにしていないことでした。

WebSocketAPIはテンプレートやWordPartyでも使用しているもので、コラボなどの出力のコントロールのために「書き出し」の設定はONである必要があります

> わんコメの１番目の枠で取得したチャットに対して、そのチャットを加工して２番目の枠に流し、加工済のチャットのみをOBS画面に出力するアプリを作成していました。

技術的に前述の課題を回避する方法はありますが、その点をクリアしても上記の方式ではさらにいくつか問題が発生するかと思います

1. リスナーリストの投稿数が２重カウントされる
2. アンケート・リクエストなどが２回投稿される（参加管理は同一ユーザーが連続投稿ものは無視されるため影響なし）
3. プラグイン・リモートビュー・わんコメに同じコメントが連続で表示される
4. ユーザー別に翻訳連携している場合、そのユーザーの翻訳量が倍になる

これについては許容されるものでしょうか？

---

<div class="post-metadata">

**Author:** ![ASTIE](https://yyz1.discourse-cdn.com/flex031/user_avatar/forum.onecomme.com/astie/32/58_2.png) [@ASTIE](https://forum.onecomme.com/u/ASTIE)\
**Post date:** [2024 年 5 月 18 日午前 6:55 UTC](https://forum.onecomme.com/t/topic/1649/5 "2024-05-18T06:55:50Z")

</div>

他のやり方として思いつく部分としてはわんコメに戻さずテンプレートに送信する方法でしょうか（もしくはわんコメ定例で少しだけ解説した5.2βでのプラグインでコメントフィルタ）

わんコメのテンプレートはコメント取得するWebSocketのホストやポートを、JavaScript、URLクエリパラメータ、CSS変数の３種類から変更できます

> <https://github.com/OneComme/OneSDK/blob/main/src/OneSDK.ts#L64-L126>

わんコメのコメントを取得した後、加工後テンプレートのWebSocketクライアントに対して送信すればテンプレートで直接受け取ることができます

WebSocketクライアントに送る際には以下のようなフォーマットでコメント送信すればJavaScriptを変更せずに送れると思います

```auto
{
   type: 'comments',
   comments: Comment[] // コメントデータの配列
}

```

---

<div class="post-metadata">

**Author:** ![ASTIE](https://yyz1.discourse-cdn.com/flex031/user_avatar/forum.onecomme.com/astie/32/58_2.png) [@ASTIE](https://forum.onecomme.com/u/ASTIE)\
**Post date:** [2024 年 5 月 18 日午前 7:38 UTC](https://forum.onecomme.com/t/topic/1649/6 "2024-05-18T07:38:14Z")

</div>

わんコメ5.2βで開発中のプラグイン機能を使ったコメント加工サンプルプラグインを用意しましたので、こちらは参考までに・・・

> **[GitHub - OneComme/OneCommeFilterSamplePlugin](https://github.com/OneComme/OneCommeFilterSamplePlugin)**
>
> Contribute to OneComme/OneCommeFilterSamplePlugin development by creating an account on GitHub.

---

<div class="post-metadata">

**Author:** ![ch\_suginami](https://yyz1.discourse-cdn.com/flex031/user_avatar/forum.onecomme.com/ch_suginami/32/1558_2.png) [@ch\_suginami](https://forum.onecomme.com/u/ch_suginami)\
**Post date:** [2024 年 5 月 23 日午後 2:45 UTC](https://forum.onecomme.com/t/topic/1649/7 "2024-05-23T14:45:38Z")

</div>

遅くなりました、コメントありがとうございます。

コメントいただきましたように、専用テンプレートを作成してそこへWebSocketで流すことにより解決しました。  
アイディアをいただきありがとうございました。
