20230423
1、抖音直播互动数据对接更换成系统代理抓包pd解码的方式(运行直播伴侣即可); 2、修复若干逻辑及说明错误。
This commit is contained in:
		
							parent
							
								
									a42a72081d
								
							
						
					
					
						commit
						d80543684a
					
				
							
								
								
									
										450
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										450
									
								
								README.md
									
									
									
									
									
								
							| @ -6,247 +6,67 @@ | ||||
| </div> | ||||
| 
 | ||||
| 
 | ||||
| 		Fay是一个完整的开源项目,包含Python内核及UE数字人模型。开发人员可以利用该项目简单地构建各种类型的数字人或数字助理。该项目各模块之间耦合度非常低,包括声音来源、语音识别、情绪分析、NLP处理、情绪语音合成、语音输出和表情动作输出等模块。每个模块都可以轻松地更换。其中,NLP可以自由切换AIUI、GPT及Yuan1.0。 | ||||
| Fay是一个完整的开源项目,包含Fay控制器及数字人模型,可灵活组合出不同的应用场景:虚拟主播、现场推销货、商品导购、语音助理、远程语音助理、数字人互动、数字人面试官及心理测评、贾维斯、Her。开发人员可以利用该项目简单地构建各种类型的数字人或数字助理。该项目各模块之间耦合度非常低,包括声音来源、语音识别、情绪分析、NLP处理、情绪语音合成、语音输出和表情动作输出等模块。每个模块都可以轻松地更换。 | ||||
| 
 | ||||
| <img src="images/5.png" alt="QA"> | ||||
| ## **一、Fay控制器用途** | ||||
| 
 | ||||
| 相关文章: | ||||
| 
 | ||||
| 1、[(34条消息) 非常全面的数字人解决方案_郭泽斌之心的博客-CSDN博客_数字人算法](https://blog.csdn.net/aa84758481/article/details/124758727) | ||||
|  | ||||
| 
 | ||||
| 2、[(34条消息) Fay数字人开源项目在mac 上的安装办法_郭泽斌之心的博客-CSDN博客](https://blog.csdn.net/aa84758481/article/details/127551258) | ||||
| 
 | ||||
| 3、【开源项目:数字人FAY——Fay新架构使用讲解】 https://www.bilibili.com/video/BV1NM411B7Ab/?share_source=copy_web&vd_source=64cd9062f5046acba398177b62bea9ad | ||||
| ### **远程语音助理**   [`PC demo`](https://github.com/TheRamU/Fay/tree/main/python_connector_demo) | ||||
| 
 | ||||
| 4、【开源项目FAY——UE工程讲解】https://www.bilibili.com/video/BV1C8411P7Ac?vd_source=64cd9062f5046acba398177b62bea9ad | ||||
| ### **远程语音助理**  [`android demo`](https://github.com/TheRamU/Fay/tree/main/android_connector_demo) | ||||
| 
 | ||||
| 5、m1机器安装办法(Gason提供):https://www.zhihu.com/question/437075754 | ||||
| 
 | ||||
| 
 | ||||
| 目前最新版本是2.0。在新版本里我们提出一个全新的架构。在这个架构下每个人都可以把Fay控制器搭建在自己个人电脑上(未来,或许我们会提供终端),让你电脑成为你数字助理的载体。你的所有设备(手表、手机、眼镜、笔记本)随时可以与你的数字助理通讯,数字助理将通过电脑为你处理数字世界里的所有事情。(贾维斯?Her?) | ||||
|  | ||||
| 
 | ||||
| 2023.03: | ||||
| 1、增加edge-tts语音合成(免费)可替换azure-tts(支持情绪化语音); | ||||
| 2、替换flask发行版运行方式; | ||||
| 4、web socket接口增加数字人文字内容同步,以便数人字可以远程运行; | ||||
| 5、优化数字人数据web socket同步逻辑; | ||||
| 6、更改gpt 3.5对接方式。 | ||||
| 
 | ||||
| 2023.02: | ||||
| 1、提供chatgpt及yuan1.0作为选择。 | ||||
| 
 | ||||
| 2023.01: | ||||
| 1、控制器pc内网穿透,音频输入输出设备远程直连; | ||||
| 2、提供android 音频输入输出工程示例代码; | ||||
| 3、提供python音频输入输出工程示例代码(远程PC、树莓派等可用); | ||||
| 4、补传1.0语音指令音乐播放模块(暂不支持远程播放); | ||||
| 5、重构及补充若干工具模块:websocket、多线程、缓冲器、音频流录制器等; | ||||
| 6、修复1.x版本的多个bug; | ||||
| 7、集成看板娘; | ||||
| 
 | ||||
| 
 | ||||
| 2022.12: | ||||
| 1、上传bin目录(用于直播互动); | ||||
| 
 | ||||
| 2022.11: | ||||
| 1、更新抖音直播获取粉丝互动数据的xpath; | ||||
| 
 | ||||
| 2022.10.27: | ||||
| 1、更新mac上的麦克风参数; | ||||
| 2、解决mac上无法重启问题; | ||||
| 3、上传brew安装脚本。 | ||||
| 
 | ||||
| 2022.10.17: | ||||
| 1、更新语音指令; | ||||
| 2、补充人设语法; | ||||
| 
 | ||||
| ## 语音指令 | ||||
| 
 | ||||
| - **关闭核心** | ||||
|   关闭 | ||||
|   再见 | ||||
|   你走吧 | ||||
| - **静音** | ||||
|   静音 | ||||
|   闭嘴 | ||||
|   我想静静 | ||||
| - **取消静音** | ||||
|   取消静音 | ||||
|   你在哪呢? | ||||
|   你可以说话了 | ||||
| - **播放歌曲(暂不能用需更换音乐库)** | ||||
|   播放歌曲 | ||||
|   播放音乐 | ||||
|   唱首歌 | ||||
|   放首歌 | ||||
|   听音乐 | ||||
|   你会唱歌吗? | ||||
| - **暂停播放** | ||||
|   暂停播放 | ||||
|   别唱了 | ||||
|   我不想听了 | ||||
| 
 | ||||
| 
 | ||||
| ## 环境 | ||||
| 
 | ||||
| - Python 3.8.0 + | ||||
| 
 | ||||
| - Chrome 浏览器 (若不开启直播功能,可跳过) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ## 安装 | ||||
| 
 | ||||
| ### 安装依赖 | ||||
| 
 | ||||
| ```shell | ||||
| pip install -r requirements.txt | ||||
| ``` | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ### 配置 ChromeDriver (若不开启直播功能,可跳过) | ||||
| 
 | ||||
| 1. Chrome 浏览器进入 [`chrome://settings/help`](chrome://settings/help) 查看当前版本 | ||||
| 2. 下载对应版本 [ChromeDriver](https://chromedriver.chromium.org/downloads)  | ||||
| 3. 解压zip并拷贝至 <u>./bin</u> 目录 | ||||
| 4. 编辑 <u>system.conf</u> 配置 ChromeDriver 路径 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ### 配置应用密钥 | ||||
| 
 | ||||
| 1. 查看 [AI 模块](#ai-模块) | ||||
| 
 | ||||
| 2. 浏览链接,注册并创建应用,将应用密钥填入 `./system.conf` 中 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ## 启动 | ||||
| 
 | ||||
| 启动数字人图像控制器 | ||||
| 
 | ||||
| ```shell | ||||
| python main.py | ||||
| ``` | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ## 图形界面 | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| ### 人设 | ||||
| 
 | ||||
| 数字人属性,与用户交互中能做出相应的响应。 | ||||
| 
 | ||||
| ##### 交互灵敏度 | ||||
| 
 | ||||
| 在交互中,数字人能感受用户的情感,并作出反应。最直的体现,就是语气的变化,如 开心/伤心/生气 等。 | ||||
| 
 | ||||
| 设置灵敏度,可改变用户情感对于数字人的影响程度。 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ### 接收来源 | ||||
| 
 | ||||
| #### 抖音 | ||||
| 
 | ||||
| 填入直播间地址,实现与直播间粉丝交互 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #### 麦克风 | ||||
| 
 | ||||
| 选择麦克风设备,实现面对面交互,成为你的伙伴 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #### socket远程音频输入 | ||||
| 
 | ||||
| 可以接入远程音频输入,远程音频输出 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #### 商品栏 | ||||
| 
 | ||||
| 填入商品介绍,数字人将自动讲解商品。 | ||||
| 
 | ||||
| 当用户对商品有疑问时,数字人可自动跳转至对应商品并解答问题。 | ||||
| 
 | ||||
| 配合抖音接收来源,实现直播间自动带货。 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ## AI 模块 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 启动前需填入应用密钥[`system.conf`](https://github.com/TheRamU/Fay/blob/main/system.conf) | ||||
| 
 | ||||
| | 代码模块                  | 描述                       | 链接                                                         | | ||||
| | ------------------------- | -------------------------- | ------------------------------------------------------------ | | ||||
| | ./ai_module/ali_nls.py    | 阿里云 实时语音识别        | https://ai.aliyun.com/nls/trans                              | | ||||
| | ./ai_module/ms_tts_sdk.py | 微软 文本转情绪语音(可选)   | https://azure.microsoft.com/zh-cn/services/cognitive-services/text-to-speech/ | | ||||
| | ./ai_module/xf_ltp.py     | 讯飞 情感分析              | https://www.xfyun.cn/service/emotion-analysis                | | ||||
| | ./utils/ngrok_util.py     | ngrok.cc 外网穿透(可选)  | http://ngrok.cc                                              | | ||||
| | ./ai_module/yuan_1_0.py    | 浪潮源大模型(NLP 3选1)  | https://air.inspur.com/                                              | | ||||
| | ./ai_module/chatgpt.py     | ChatGPT(NLP 3选1)  | *******                                              | | ||||
| | ./ai_module/xf_aiui.py    | 讯飞自然语言处理(NLP 3选1)   | https://aiui.xfyun.cn/solution/webapi                        | | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ## 与远程音频输入输出设备连接(非必须,外网需要配置http://ngrok.cc ngrok tcp通道的clientid) | ||||
| 
 | ||||
| 控制器与采用 socket(非websocket) 方式与 音频输出设备通讯 | ||||
| 
 | ||||
| 内网通讯地址: [`ws://127.0.0.1:10001`](ws://127.0.0.1:10001) | ||||
| 
 | ||||
| 外网通讯地址: 通过http://ngrok.cc获取 | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| 
 | ||||
| 消息格式: 参考 [remote_audio.py](https://github.com/TheRamU/Fay/blob/main/python_connector_demo/remote_audio.py) | ||||
| 
 | ||||
| ## 与数字形象通讯(非必须,控制器需要关闭“面板播放”) | ||||
| ### **与数字形象通讯**(非必须,控制器需要关闭“面板播放”) | ||||
| 
 | ||||
| 控制器与采用 WebSocket 方式与 UE 通讯 | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| 下载工程: [https://pan.baidu.com/s/1RBo2Pie6A5yTrCf1cn_Tuw?pwd=ck99](https://pan.baidu.com/s/1RBo2Pie6A5yTrCf1cn_Tuw?pwd=ck99) | ||||
| 
 | ||||
| 
 | ||||
| 下载windows运行包: [https://pan.baidu.com/s/1CsJ647uV5rS2NjQH3QT0Iw?pwd=s9s8](https://pan.baidu.com/s/1CsJ647uV5rS2NjQH3QT0Iw?pwd=s9s8) | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| **发您的Fay运行效果视频至公众号领取最新的UE5模型哦** | ||||
| 
 | ||||
| 通讯地址: [`ws://127.0.0.1:10002`](ws://127.0.0.1:10002)(已接通) | ||||
| 
 | ||||
| 消息格式: 查看 [WebSocket.md](https://github.com/TheRamU/Fay/blob/main/WebSocket.md) | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| 
 | ||||
| ### **与远程音频输入输出设备连接**(非必须,外网需要配置http://ngrok.cc tcp通道的clientid) | ||||
| 
 | ||||
| 控制器与采用 socket(非websocket) 方式与 音频输出设备通讯 | ||||
| 
 | ||||
| 内网通讯地址: [`ws://127.0.0.1:10001`](ws://127.0.0.1:10001) | ||||
| 
 | ||||
| 外网通讯地址: 通过http://ngrok.cc获取(有伙伴愿意赞助服务器给社区免费使用吗?) | ||||
| 
 | ||||
|  | ||||
| 消息格式: 参考 [remote_audio.py](https://github.com/TheRamU/Fay/blob/main/python_connector_demo/remote_audio.py) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ## **二、Fay控制器核心逻辑** | ||||
| 
 | ||||
| ## 目录结构 | ||||
|  | ||||
| 
 | ||||
|  **注:** | ||||
| 
 | ||||
| 1、去API及会话管理功能将在下一版本发布; | ||||
| 
 | ||||
| 2、以上每个模块可轻易替换成自家核心产品。 | ||||
| 
 | ||||
| ### **目录结构** | ||||
| 
 | ||||
| ``` | ||||
| . | ||||
| @ -258,6 +78,8 @@ python main.py | ||||
| │   ├── ali_nls.py			# 阿里云 实时语音 | ||||
| │   ├── ms_tts_sdk.py       # 微软 文本转语音 | ||||
| │   ├── xf_aiui.py          # 讯飞 人机交互-自然语言处理 | ||||
| │   ├── chatgpt.py          # gpt3.5对接 | ||||
| │   ├── yuan_1_0.py          # 浪潮.源大模型对接 | ||||
| │   └── xf_ltp.py           # 讯飞 性感分析 | ||||
| ├── bin                     # 可执行文件目录 | ||||
| ├── core                    # 数字人核心 | ||||
| @ -278,10 +100,198 @@ python main.py | ||||
|     ├── storer.py | ||||
|     └── util.py | ||||
| ``` | ||||
| 进一步交流请联系QQ 467665317 | ||||
| 
 | ||||
| 技术交流群 | ||||
| 
 | ||||
| <img src="images/20230329172514.jpg" alt="微信群"> | ||||
| 
 | ||||
| 
 | ||||
| ## **三、升级日志** | ||||
| 
 | ||||
| **2023.04:** | ||||
| 
 | ||||
| + 抖音直播互动数据对接更换成系统代理抓包pd解码的方式(运行直播伴侣即可); | ||||
| + 修复若干逻辑及说明错误。 | ||||
| 
 | ||||
| 
 | ||||
| **2023.03:** | ||||
| 
 | ||||
| + 增加edge-tts语音合成(免费)可替换azure-tts(支持情绪化语音); | ||||
| + 替换flask发行版运行方式; | ||||
| + web socket接口增加数字人文字内容同步,以便数人字可以远程运行; | ||||
| + 优化数字人数据web socket同步逻辑; | ||||
| + 更改gpt 3.5对接方式。 | ||||
| 
 | ||||
| **2023.02:** | ||||
| 
 | ||||
| + 提供chatgpt及yuan1.0作为选择。 | ||||
| 
 | ||||
| **2023.01:** | ||||
| 
 | ||||
| + 控制器pc内网穿透,音频输入输出设备远程直连; | ||||
| + 提供android 音频输入输出工程示例代码; | ||||
| + 提供python音频输入输出工程示例代码(远程PC、树莓派等可用); | ||||
| + 补传1.0语音指令音乐播放模块(暂不支持远程播放); | ||||
| + 重构及补充若干工具模块:websocket、多线程、缓冲器、音频流录制器等; | ||||
| + 修复1.x版本的多个bug; | ||||
| + 集成看板娘; | ||||
| 
 | ||||
| **2022.12:** | ||||
| 
 | ||||
| + 上传bin目录(用于直播互动); | ||||
| 
 | ||||
| **2022.11:** | ||||
| 
 | ||||
| + 更新抖音直播获取粉丝互动数据的xpath; | ||||
| 
 | ||||
| **2022.10.27:** | ||||
| 
 | ||||
| + 更新mac上的麦克风参数; | ||||
| + 解决mac上无法重启问题; | ||||
| + 上传brew安装脚本。 | ||||
| 
 | ||||
| **2022.10.17:** | ||||
| + 更新语音指令; | ||||
| + 补充人设语法; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ## **四、安装说明** | ||||
| 
 | ||||
| 
 | ||||
| ### **环境**  | ||||
| - Python 3.8.0 + | ||||
| - Chrome 浏览器 (若不开启直播功能,可跳过) | ||||
| 
 | ||||
| ### **安装依赖** | ||||
| 
 | ||||
| ```shell | ||||
| pip install -r requirements.txt | ||||
| ``` | ||||
| 
 | ||||
| ### **配置应用密钥** | ||||
| + 查看 [AI 模块](#ai-模块) | ||||
| + 浏览链接,注册并创建应用,将应用密钥填入 `./system.conf` 中 | ||||
| 
 | ||||
| ### **启动** | ||||
| 启动Fay控制器 | ||||
| ```shell | ||||
| python main.py | ||||
| ``` | ||||
| 
 | ||||
| 
 | ||||
| ### **AI 模块** | ||||
| 启动前需填入应用密钥 | ||||
| 
 | ||||
| | 代码模块                  | 描述                       | 链接                                                         | | ||||
| | ------------------------- | -------------------------- | ------------------------------------------------------------ | | ||||
| | ./ai_module/ali_nls.py    | 阿里云 实时语音识别        | https://ai.aliyun.com/nls/trans                              | | ||||
| | ./ai_module/ms_tts_sdk.py | 微软 文本转情绪语音(可选)   | https://azure.microsoft.com/zh-cn/services/cognitive-services/text-to-speech/ | | ||||
| | ./ai_module/xf_ltp.py     | 讯飞 情感分析              | https://www.xfyun.cn/service/emotion-analysis                | | ||||
| | ./utils/ngrok_util.py     | ngrok.cc 外网穿透(可选)  | http://ngrok.cc                                              | | ||||
| | ./ai_module/yuan_1_0.py    | 浪潮源大模型(NLP 3选1)  | https://air.inspur.com/                                              | | ||||
| | ./ai_module/chatgpt.py     | ChatGPT(NLP 3选1)  | *******                                              | | ||||
| | ./ai_module/xf_aiui.py    | 讯飞自然语言处理(NLP 3选1)   | https://aiui.xfyun.cn/solution/webapi                        | | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ## **五、使用说明** | ||||
| 
 | ||||
| 
 | ||||
| ### **使用说明** | ||||
| 
 | ||||
| + 抖音虚拟主播:fay控制器(抖音输入源开启、展板播放关闭)+ 数字人 + 抖音伴侣; | ||||
| + 现场推销货:fay控制器(展板播放关闭、填写商品信息)+ 数字人; | ||||
| + 商品导购:fay控制器(麦克风输入源开启、展板播放关闭、填写商品信息、填写商品Q&A)+ 数字人; | ||||
| + 语音助理:fay控制器(麦克风输入源开启、展板播放开启); | ||||
| + 远程语音助理:fay控制器(展板播放关闭)+ 远程设备接入; | ||||
| + 数字人互动:fay控制器(麦克风输入源开启、展板播放关闭、填写性格Q&A)+ 数字人; | ||||
| + 数字人面试官及心理测评:联系免费领取; | ||||
| + 贾维斯、Her:加入我们一起完成。 | ||||
| 
 | ||||
| 
 | ||||
| ### **语音指令** | ||||
| 
 | ||||
| - **关闭核心** | ||||
|   关闭 | ||||
|   再见 | ||||
|   你走吧 | ||||
| - **静音** | ||||
|   静音 | ||||
|   闭嘴 | ||||
|   我想静静 | ||||
| - **取消静音** | ||||
|   取消静音 | ||||
|   你在哪呢? | ||||
|   你可以说话了 | ||||
| - **播放歌曲**(网易音乐库不可用,寻找替代中) | ||||
|   播放歌曲 | ||||
|   播放音乐 | ||||
|   唱首歌 | ||||
|   放首歌 | ||||
|   听音乐 | ||||
|   你会唱歌吗? | ||||
| - **暂停播放** | ||||
|   暂停播放 | ||||
|   别唱了 | ||||
|   我不想听了 | ||||
| 
 | ||||
| 
 | ||||
| ### **图形界面** | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| 
 | ||||
| ### **人设** | ||||
| 数字人属性,与用户交互中能做出相应的响应。 | ||||
| #### 交互灵敏度 | ||||
| 在交互中,数字人能感受用户的情感,并作出反应。最直的体现,就是语气的变化,如 开心/伤心/生气 等。 | ||||
| 设置灵敏度,可改变用户情感对于数字人的影响程度。 | ||||
| 
 | ||||
| ### **接收来源** | ||||
| 
 | ||||
| #### 抖音 | ||||
| 
 | ||||
| 填入直播间地址,实现与直播间粉丝交互 | ||||
| 
 | ||||
| #### 麦克风 | ||||
| 
 | ||||
| 选择麦克风设备,实现面对面交互,成为你的伙伴 | ||||
| 
 | ||||
| #### socket远程音频输入 | ||||
| 
 | ||||
| 可以接入远程音频输入,远程音频输出 | ||||
| 
 | ||||
| 
 | ||||
| #### 商品栏 | ||||
| 
 | ||||
| 填入商品介绍,数字人将自动讲解商品。 | ||||
| 
 | ||||
| 当用户对商品有疑问时,数字人可自动跳转至对应商品并解答问题。 | ||||
| 
 | ||||
| 配合抖音接收来源,实现直播间自动带货。 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ### 相关文章: | ||||
| 
 | ||||
| 1、[(34条消息) 非常全面的数字人解决方案_郭泽斌之心的博客-CSDN博客_数字人算法](https://blog.csdn.net/aa84758481/article/details/124758727) | ||||
| 
 | ||||
| 2、[(34条消息) Fay数字人开源项目在mac 上的安装办法_郭泽斌之心的博客-CSDN博客](https://blog.csdn.net/aa84758481/article/details/127551258) | ||||
| 
 | ||||
| 3、【开源项目:数字人FAY——Fay新架构使用讲解】 https://www.bilibili.com/video/BV1NM411B7Ab/?share_source=copy_web&vd_source=64cd9062f5046acba398177b62bea9ad | ||||
| 
 | ||||
| 4、【开源项目FAY——UE工程讲解】https://www.bilibili.com/video/BV1C8411P7Ac?vd_source=64cd9062f5046acba398177b62bea9ad | ||||
| 
 | ||||
| 5、m1机器安装办法(Gason提供):https://www.zhihu.com/question/437075754 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 二次开发指导联系QQ 467665317 | ||||
| 
 | ||||
| 关注公众号获取最新微信技术交流群二维码 | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										21
									
								
								WebSocket.md
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								WebSocket.md
									
									
									
									
									
								
							| @ -48,3 +48,24 @@ | ||||
| | Data.Time  | 音频时长 (秒)    | float |                 | | ||||
| | Data.Type  | 发言类型         | str   | interact/script | | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ### 发送回复文字 | ||||
| 
 | ||||
| ```json | ||||
| { | ||||
|     "Topic": "Unreal", | ||||
|     "Data": { | ||||
|         "Key": "text", | ||||
|         "Value": "很高兴见到你" | ||||
|     } | ||||
| } | ||||
| ``` | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| | 参数       | 描述             | 类型  | 范围            | | ||||
| | ---------- | ---------------- | ----- | --------------- | | ||||
| | Data.text | 文本 | str   |                 | | ||||
							
								
								
									
										
											BIN
										
									
								
								bin/Release_2.85/BCMakeCert.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/Release_2.85/BCMakeCert.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/Release_2.85/BasicFormatsForCore.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/Release_2.85/BasicFormatsForCore.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/Release_2.85/CertMaker.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/Release_2.85/CertMaker.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/Release_2.85/ColorConsole.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/Release_2.85/ColorConsole.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/Release_2.85/FiddlerCore4.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/Release_2.85/FiddlerCore4.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										7270
									
								
								bin/Release_2.85/FiddlerCore4.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7270
									
								
								bin/Release_2.85/FiddlerCore4.xml
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/Release_2.85/Fleck.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/Release_2.85/Fleck.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/Release_2.85/Newtonsoft.Json.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/Release_2.85/Newtonsoft.Json.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										11305
									
								
								bin/Release_2.85/Newtonsoft.Json.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11305
									
								
								bin/Release_2.85/Newtonsoft.Json.xml
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/Release_2.85/System.Buffers.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/Release_2.85/System.Buffers.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										38
									
								
								bin/Release_2.85/System.Buffers.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								bin/Release_2.85/System.Buffers.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,38 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?><doc> | ||||
|   <assembly> | ||||
|     <name>System.Buffers</name> | ||||
|   </assembly> | ||||
|   <members> | ||||
|     <member name="T:System.Buffers.ArrayPool`1"> | ||||
|       <summary>Provides a resource pool that enables reusing instances of type <see cref="T[]"></see>.</summary> | ||||
|       <typeparam name="T">The type of the objects that are in the resource pool.</typeparam> | ||||
|     </member> | ||||
|     <member name="M:System.Buffers.ArrayPool`1.#ctor"> | ||||
|       <summary>Initializes a new instance of the <see cref="T:System.Buffers.ArrayPool`1"></see> class.</summary> | ||||
|     </member> | ||||
|     <member name="M:System.Buffers.ArrayPool`1.Create"> | ||||
|       <summary>Creates a new instance of the <see cref="T:System.Buffers.ArrayPool`1"></see> class.</summary> | ||||
|       <returns>A new instance of the <see cref="System.Buffers.ArrayPool`1"></see> class.</returns> | ||||
|     </member> | ||||
|     <member name="M:System.Buffers.ArrayPool`1.Create(System.Int32,System.Int32)"> | ||||
|       <summary>Creates a new instance of the <see cref="T:System.Buffers.ArrayPool`1"></see> class using the specifed configuration.</summary> | ||||
|       <param name="maxArrayLength">The maximum length of an array instance that may be stored in the pool.</param> | ||||
|       <param name="maxArraysPerBucket">The maximum number of array instances that may be stored in each bucket in the pool. The pool groups arrays of similar lengths into buckets for faster access.</param> | ||||
|       <returns>A new instance of the <see cref="System.Buffers.ArrayPool`1"></see> class with the specified configuration.</returns> | ||||
|     </member> | ||||
|     <member name="M:System.Buffers.ArrayPool`1.Rent(System.Int32)"> | ||||
|       <summary>Retrieves a buffer that is at least the requested length.</summary> | ||||
|       <param name="minimumLength">The minimum length of the array.</param> | ||||
|       <returns>An array of type <see cref="T[]"></see> that is at least <paramref name="minimumLength">minimumLength</paramref> in length.</returns> | ||||
|     </member> | ||||
|     <member name="M:System.Buffers.ArrayPool`1.Return(`0[],System.Boolean)"> | ||||
|       <summary>Returns an array to the pool that was previously obtained using the <see cref="M:System.Buffers.ArrayPool`1.Rent(System.Int32)"></see> method on the same <see cref="T:System.Buffers.ArrayPool`1"></see> instance.</summary> | ||||
|       <param name="array">A buffer to return to the pool that was previously obtained using the <see cref="M:System.Buffers.ArrayPool`1.Rent(System.Int32)"></see> method.</param> | ||||
|       <param name="clearArray">Indicates whether the contents of the buffer should be cleared before reuse. If <paramref name="clearArray">clearArray</paramref> is set to true, and if the pool will store the buffer to enable subsequent reuse, the <see cref="M:System.Buffers.ArrayPool`1.Return(`0[],System.Boolean)"></see> method will clear the <paramref name="array">array</paramref> of its contents so that a subsequent caller using the <see cref="M:System.Buffers.ArrayPool`1.Rent(System.Int32)"></see> method will not see the content of the previous caller. If <paramref name="clearArray">clearArray</paramref> is set to false or if the pool will release the buffer, the array&#39;s contents are left unchanged.</param> | ||||
|     </member> | ||||
|     <member name="P:System.Buffers.ArrayPool`1.Shared"> | ||||
|       <summary>Gets a shared <see cref="T:System.Buffers.ArrayPool`1"></see> instance.</summary> | ||||
|       <returns>A shared <see cref="System.Buffers.ArrayPool`1"></see> instance.</returns> | ||||
|     </member> | ||||
|   </members> | ||||
| </doc> | ||||
							
								
								
									
										
											BIN
										
									
								
								bin/Release_2.85/System.Collections.Immutable.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/Release_2.85/System.Collections.Immutable.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										5143
									
								
								bin/Release_2.85/System.Collections.Immutable.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5143
									
								
								bin/Release_2.85/System.Collections.Immutable.xml
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/Release_2.85/System.Memory.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/Release_2.85/System.Memory.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										355
									
								
								bin/Release_2.85/System.Memory.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										355
									
								
								bin/Release_2.85/System.Memory.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,355 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?><doc> | ||||
|   <assembly> | ||||
|     <name>System.Memory</name> | ||||
|   </assembly> | ||||
|   <members> | ||||
|     <member name="T:System.Span`1"> | ||||
|       <typeparam name="T"></typeparam> | ||||
|     </member> | ||||
|     <member name="M:System.Span`1.#ctor(`0[])"> | ||||
|       <param name="array"></param> | ||||
|     </member> | ||||
|     <member name="M:System.Span`1.#ctor(System.Void*,System.Int32)"> | ||||
|       <param name="pointer"></param> | ||||
|       <param name="length"></param> | ||||
|     </member> | ||||
|     <member name="M:System.Span`1.#ctor(`0[],System.Int32)"> | ||||
|       <param name="array"></param> | ||||
|       <param name="start"></param> | ||||
|     </member> | ||||
|     <member name="M:System.Span`1.#ctor(`0[],System.Int32,System.Int32)"> | ||||
|       <param name="array"></param> | ||||
|       <param name="start"></param> | ||||
|       <param name="length"></param> | ||||
|     </member> | ||||
|     <member name="M:System.Span`1.Clear"> | ||||
|        | ||||
|     </member> | ||||
|     <member name="M:System.Span`1.CopyTo(System.Span{`0})"> | ||||
|       <param name="destination"></param> | ||||
|     </member> | ||||
|     <member name="M:System.Span`1.DangerousCreate(System.Object,`0@,System.Int32)"> | ||||
|       <param name="obj"></param> | ||||
|       <param name="objectData"></param> | ||||
|       <param name="length"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.Span`1.DangerousGetPinnableReference"> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="P:System.Span`1.Empty"> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.Span`1.Equals(System.Object)"> | ||||
|       <param name="obj"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.Span`1.Fill(`0)"> | ||||
|       <param name="value"></param> | ||||
|     </member> | ||||
|     <member name="M:System.Span`1.GetHashCode"> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="P:System.Span`1.IsEmpty"> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="P:System.Span`1.Item(System.Int32)"> | ||||
|       <param name="index"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="P:System.Span`1.Length"> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.Span`1.op_Equality(System.Span{`0},System.Span{`0})"> | ||||
|       <param name="left"></param> | ||||
|       <param name="right"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.Span`1.op_Implicit(System.ArraySegment{T})~System.Span{T}"> | ||||
|       <param name="arraySegment"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.Span`1.op_Implicit(System.Span{T})~System.ReadOnlySpan{T}"> | ||||
|       <param name="span"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.Span`1.op_Implicit(T[])~System.Span{T}"> | ||||
|       <param name="array"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.Span`1.op_Inequality(System.Span{`0},System.Span{`0})"> | ||||
|       <param name="left"></param> | ||||
|       <param name="right"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.Span`1.Slice(System.Int32)"> | ||||
|       <param name="start"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.Span`1.Slice(System.Int32,System.Int32)"> | ||||
|       <param name="start"></param> | ||||
|       <param name="length"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.Span`1.ToArray"> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.Span`1.TryCopyTo(System.Span{`0})"> | ||||
|       <param name="destination"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="T:System.SpanExtensions"> | ||||
|        | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.AsBytes``1(System.ReadOnlySpan{``0})"> | ||||
|       <param name="source"></param> | ||||
|       <typeparam name="T"></typeparam> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.AsBytes``1(System.Span{``0})"> | ||||
|       <param name="source"></param> | ||||
|       <typeparam name="T"></typeparam> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.AsSpan(System.String)"> | ||||
|       <param name="text"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.AsSpan``1(System.ArraySegment{``0})"> | ||||
|       <param name="arraySegment"></param> | ||||
|       <typeparam name="T"></typeparam> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.AsSpan``1(``0[])"> | ||||
|       <param name="array"></param> | ||||
|       <typeparam name="T"></typeparam> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.CopyTo``1(``0[],System.Span{``0})"> | ||||
|       <param name="array"></param> | ||||
|       <param name="destination"></param> | ||||
|       <typeparam name="T"></typeparam> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.IndexOf(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})"> | ||||
|       <param name="span"></param> | ||||
|       <param name="value"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.IndexOf(System.Span{System.Byte},System.Byte)"> | ||||
|       <param name="span"></param> | ||||
|       <param name="value"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.IndexOf(System.ReadOnlySpan{System.Byte},System.Byte)"> | ||||
|       <param name="span"></param> | ||||
|       <param name="value"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.IndexOf(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})"> | ||||
|       <param name="span"></param> | ||||
|       <param name="value"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.IndexOf``1(System.ReadOnlySpan{``0},System.ReadOnlySpan{``0})"> | ||||
|       <param name="span"></param> | ||||
|       <param name="value"></param> | ||||
|       <typeparam name="T"></typeparam> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.IndexOf``1(System.ReadOnlySpan{``0},``0)"> | ||||
|       <param name="span"></param> | ||||
|       <param name="value"></param> | ||||
|       <typeparam name="T"></typeparam> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.IndexOf``1(System.Span{``0},System.ReadOnlySpan{``0})"> | ||||
|       <param name="span"></param> | ||||
|       <param name="value"></param> | ||||
|       <typeparam name="T"></typeparam> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.IndexOf``1(System.Span{``0},``0)"> | ||||
|       <param name="span"></param> | ||||
|       <param name="value"></param> | ||||
|       <typeparam name="T"></typeparam> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.IndexOfAny(System.ReadOnlySpan{System.Byte},System.Byte,System.Byte,System.Byte)"> | ||||
|       <param name="span"></param> | ||||
|       <param name="value0"></param> | ||||
|       <param name="value1"></param> | ||||
|       <param name="value2"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.IndexOfAny(System.Span{System.Byte},System.Byte,System.Byte,System.Byte)"> | ||||
|       <param name="span"></param> | ||||
|       <param name="value0"></param> | ||||
|       <param name="value1"></param> | ||||
|       <param name="value2"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.IndexOfAny(System.Span{System.Byte},System.Byte,System.Byte)"> | ||||
|       <param name="span"></param> | ||||
|       <param name="value0"></param> | ||||
|       <param name="value1"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.IndexOfAny(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})"> | ||||
|       <param name="span"></param> | ||||
|       <param name="values"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.IndexOfAny(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})"> | ||||
|       <param name="span"></param> | ||||
|       <param name="values"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.IndexOfAny(System.ReadOnlySpan{System.Byte},System.Byte,System.Byte)"> | ||||
|       <param name="span"></param> | ||||
|       <param name="value0"></param> | ||||
|       <param name="value1"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.NonPortableCast``2(System.ReadOnlySpan{``0})"> | ||||
|       <param name="source"></param> | ||||
|       <typeparam name="TFrom"></typeparam> | ||||
|       <typeparam name="TTo"></typeparam> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.NonPortableCast``2(System.Span{``0})"> | ||||
|       <param name="source"></param> | ||||
|       <typeparam name="TFrom"></typeparam> | ||||
|       <typeparam name="TTo"></typeparam> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.SequenceEqual(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})"> | ||||
|       <param name="first"></param> | ||||
|       <param name="second"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.SequenceEqual(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})"> | ||||
|       <param name="first"></param> | ||||
|       <param name="second"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.SequenceEqual``1(System.ReadOnlySpan{``0},System.ReadOnlySpan{``0})"> | ||||
|       <param name="first"></param> | ||||
|       <param name="second"></param> | ||||
|       <typeparam name="T"></typeparam> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.SequenceEqual``1(System.Span{``0},System.ReadOnlySpan{``0})"> | ||||
|       <param name="first"></param> | ||||
|       <param name="second"></param> | ||||
|       <typeparam name="T"></typeparam> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.StartsWith(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})"> | ||||
|       <param name="span"></param> | ||||
|       <param name="value"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.StartsWith(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})"> | ||||
|       <param name="span"></param> | ||||
|       <param name="value"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.StartsWith``1(System.ReadOnlySpan{``0},System.ReadOnlySpan{``0})"> | ||||
|       <param name="span"></param> | ||||
|       <param name="value"></param> | ||||
|       <typeparam name="T"></typeparam> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.SpanExtensions.StartsWith``1(System.Span{``0},System.ReadOnlySpan{``0})"> | ||||
|       <param name="span"></param> | ||||
|       <param name="value"></param> | ||||
|       <typeparam name="T"></typeparam> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="T:System.ReadOnlySpan`1"> | ||||
|       <typeparam name="T"></typeparam> | ||||
|     </member> | ||||
|     <member name="M:System.ReadOnlySpan`1.#ctor(`0[])"> | ||||
|       <param name="array"></param> | ||||
|     </member> | ||||
|     <member name="M:System.ReadOnlySpan`1.#ctor(System.Void*,System.Int32)"> | ||||
|       <param name="pointer"></param> | ||||
|       <param name="length"></param> | ||||
|     </member> | ||||
|     <member name="M:System.ReadOnlySpan`1.#ctor(`0[],System.Int32)"> | ||||
|       <param name="array"></param> | ||||
|       <param name="start"></param> | ||||
|     </member> | ||||
|     <member name="M:System.ReadOnlySpan`1.#ctor(`0[],System.Int32,System.Int32)"> | ||||
|       <param name="array"></param> | ||||
|       <param name="start"></param> | ||||
|       <param name="length"></param> | ||||
|     </member> | ||||
|     <member name="M:System.ReadOnlySpan`1.CopyTo(System.Span{`0})"> | ||||
|       <param name="destination"></param> | ||||
|     </member> | ||||
|     <member name="M:System.ReadOnlySpan`1.DangerousCreate(System.Object,`0@,System.Int32)"> | ||||
|       <param name="obj"></param> | ||||
|       <param name="objectData"></param> | ||||
|       <param name="length"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.ReadOnlySpan`1.DangerousGetPinnableReference"> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="P:System.ReadOnlySpan`1.Empty"> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.ReadOnlySpan`1.Equals(System.Object)"> | ||||
|       <param name="obj"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.ReadOnlySpan`1.GetHashCode"> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="P:System.ReadOnlySpan`1.IsEmpty"> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="P:System.ReadOnlySpan`1.Item(System.Int32)"> | ||||
|       <param name="index"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="P:System.ReadOnlySpan`1.Length"> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.ReadOnlySpan`1.op_Equality(System.ReadOnlySpan{`0},System.ReadOnlySpan{`0})"> | ||||
|       <param name="left"></param> | ||||
|       <param name="right"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.ReadOnlySpan`1.op_Implicit(System.ArraySegment{T})~System.ReadOnlySpan{T}"> | ||||
|       <param name="arraySegment"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.ReadOnlySpan`1.op_Implicit(T[])~System.ReadOnlySpan{T}"> | ||||
|       <param name="array"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.ReadOnlySpan`1.op_Inequality(System.ReadOnlySpan{`0},System.ReadOnlySpan{`0})"> | ||||
|       <param name="left"></param> | ||||
|       <param name="right"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.ReadOnlySpan`1.Slice(System.Int32)"> | ||||
|       <param name="start"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.ReadOnlySpan`1.Slice(System.Int32,System.Int32)"> | ||||
|       <param name="start"></param> | ||||
|       <param name="length"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.ReadOnlySpan`1.ToArray"> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|     <member name="M:System.ReadOnlySpan`1.TryCopyTo(System.Span{`0})"> | ||||
|       <param name="destination"></param> | ||||
|       <returns></returns> | ||||
|     </member> | ||||
|   </members> | ||||
| </doc> | ||||
							
								
								
									
										
											BIN
										
									
								
								bin/Release_2.85/System.Numerics.Vectors.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/Release_2.85/System.Numerics.Vectors.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										2621
									
								
								bin/Release_2.85/System.Numerics.Vectors.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2621
									
								
								bin/Release_2.85/System.Numerics.Vectors.xml
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/Release_2.85/System.Runtime.CompilerServices.Unsafe.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/Release_2.85/System.Runtime.CompilerServices.Unsafe.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										200
									
								
								bin/Release_2.85/System.Runtime.CompilerServices.Unsafe.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										200
									
								
								bin/Release_2.85/System.Runtime.CompilerServices.Unsafe.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,200 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?><doc> | ||||
|   <assembly> | ||||
|     <name>System.Runtime.CompilerServices.Unsafe</name> | ||||
|   </assembly> | ||||
|   <members> | ||||
|     <member name="T:System.Runtime.CompilerServices.Unsafe"> | ||||
|       <summary>Contains generic, low-level functionality for manipulating pointers.</summary> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.Add``1(``0@,System.Int32)"> | ||||
|       <summary>Adds an element offset to the given reference.</summary> | ||||
|       <param name="source">The reference to add the offset to.</param> | ||||
|       <param name="elementOffset">The offset to add.</param> | ||||
|       <typeparam name="T">The type of reference.</typeparam> | ||||
|       <returns>A new reference that reflects the addition of offset to pointer.</returns> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.Add``1(``0@,System.IntPtr)"> | ||||
|       <summary>Adds an element offset to the given reference.</summary> | ||||
|       <param name="source">The reference to add the offset to.</param> | ||||
|       <param name="elementOffset">The offset to add.</param> | ||||
|       <typeparam name="T">The type of reference.</typeparam> | ||||
|       <returns>A new reference that reflects the addition of offset to pointer.</returns> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.AddByteOffset``1(``0@,System.IntPtr)"> | ||||
|       <summary>Adds a byte offset to the given reference.</summary> | ||||
|       <param name="source">The reference to add the offset to.</param> | ||||
|       <param name="byteOffset">The offset to add.</param> | ||||
|       <typeparam name="T">The type of reference.</typeparam> | ||||
|       <returns>A new reference that reflects the addition of byte offset to pointer.</returns> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.AreSame``1(``0@,``0@)"> | ||||
|       <summary>Determines whether the specified references point to the same location.</summary> | ||||
|       <param name="left">The first reference to compare.</param> | ||||
|       <param name="right">The second reference to compare.</param> | ||||
|       <typeparam name="T">The type of reference.</typeparam> | ||||
|       <returns>true if <paramref name="left">left</paramref> and <paramref name="right">right</paramref> point to the same location; otherwise, false.</returns> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.As``1(System.Object)"> | ||||
|       <summary>Casts the given object to the specified type.</summary> | ||||
|       <param name="o">The object to cast.</param> | ||||
|       <typeparam name="T">The type which the object will be cast to.</typeparam> | ||||
|       <returns>The original object, casted to the given type.</returns> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.As``2(``0@)"> | ||||
|       <summary>Reinterprets the given reference as a reference to a value of type <typeparamref name="TTo">TTo</typeparamref>.</summary> | ||||
|       <param name="source">The reference to reinterpret.</param> | ||||
|       <typeparam name="TFrom">The type of reference to reinterpret..</typeparam> | ||||
|       <typeparam name="TTo">The desired type of the reference.</typeparam> | ||||
|       <returns>A reference to a value of type <typeparamref name="TTo">TTo</typeparamref>.</returns> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.AsPointer``1(``0@)"> | ||||
|       <summary>Returns a pointer to the given by-ref parameter.</summary> | ||||
|       <param name="value">The object whose pointer is obtained.</param> | ||||
|       <typeparam name="T">The type of object.</typeparam> | ||||
|       <returns>A pointer to the given value.</returns> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.AsRef``1(System.Void*)"> | ||||
|       <summary>Reinterprets the given location as a reference to a value of type <typeparamref name="T">T</typeparamref>.</summary> | ||||
|       <param name="source">The location of the value to reference.</param> | ||||
|       <typeparam name="T">The type of the interpreted location.</typeparam> | ||||
|       <returns>A reference to a value of type <typeparamref name="T">T</typeparamref>.</returns> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.ByteOffset``1(``0@,``0@)"> | ||||
|       <summary>Determines the byte offset from origin to target from the given references.</summary> | ||||
|       <param name="origin">The reference to origin.</param> | ||||
|       <param name="target">The reference to target.</param> | ||||
|       <typeparam name="T">The type of reference.</typeparam> | ||||
|       <returns>Byte offset from origin to target i.e. <paramref name="target">target</paramref> - <paramref name="origin">origin</paramref>.</returns> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.Copy``1(System.Void*,``0@)"> | ||||
|       <summary>Copies a value of type <typeparamref name="T">T</typeparamref> to the given location.</summary> | ||||
|       <param name="destination">The location to copy to.</param> | ||||
|       <param name="source">A reference to the value to copy.</param> | ||||
|       <typeparam name="T">The type of value to copy.</typeparam> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.Copy``1(``0@,System.Void*)"> | ||||
|       <summary>Copies a value of type <typeparamref name="T">T</typeparamref> to the given location.</summary> | ||||
|       <param name="destination">The location to copy to.</param> | ||||
|       <param name="source">A pointer to the value to copy.</param> | ||||
|       <typeparam name="T">The type of value to copy.</typeparam> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlock(System.Byte@,System.Byte@,System.UInt32)"> | ||||
|       <summary>Copies bytes from the source address to the destination address.</summary> | ||||
|       <param name="destination">The destination address to copy to.</param> | ||||
|       <param name="source">The source address to copy from.</param> | ||||
|       <param name="byteCount">The number of bytes to copy.</param> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlock(System.Void*,System.Void*,System.UInt32)"> | ||||
|       <summary>Copies bytes from the source address to the destination address.</summary> | ||||
|       <param name="destination">The destination address to copy to.</param> | ||||
|       <param name="source">The source address to copy from.</param> | ||||
|       <param name="byteCount">The number of bytes to copy.</param> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned(System.Void*,System.Void*,System.UInt32)"> | ||||
|       <summary>Copies bytes from the source address to the destination address  | ||||
| without assuming architecture dependent alignment of the addresses.</summary> | ||||
|       <param name="destination">The destination address to copy to.</param> | ||||
|       <param name="source">The source address to copy from.</param> | ||||
|       <param name="byteCount">The number of bytes to copy.</param> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned(System.Byte@,System.Byte@,System.UInt32)"> | ||||
|       <summary>Copies bytes from the source address to the destination address  | ||||
| without assuming architecture dependent alignment of the addresses.</summary> | ||||
|       <param name="destination">The destination address to copy to.</param> | ||||
|       <param name="source">The source address to copy from.</param> | ||||
|       <param name="byteCount">The number of bytes to copy.</param> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.InitBlock(System.Byte@,System.Byte,System.UInt32)"> | ||||
|       <summary>Initializes a block of memory at the given location with a given initial value.</summary> | ||||
|       <param name="startAddress">The address of the start of the memory block to initialize.</param> | ||||
|       <param name="value">The value to initialize the block to.</param> | ||||
|       <param name="byteCount">The number of bytes to initialize.</param> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.InitBlock(System.Void*,System.Byte,System.UInt32)"> | ||||
|       <summary>Initializes a block of memory at the given location with a given initial value.</summary> | ||||
|       <param name="startAddress">The address of the start of the memory block to initialize.</param> | ||||
|       <param name="value">The value to initialize the block to.</param> | ||||
|       <param name="byteCount">The number of bytes to initialize.</param> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned(System.Byte@,System.Byte,System.UInt32)"> | ||||
|       <summary>Initializes a block of memory at the given location with a given initial value  | ||||
| without assuming architecture dependent alignment of the address.</summary> | ||||
|       <param name="startAddress">The address of the start of the memory block to initialize.</param> | ||||
|       <param name="value">The value to initialize the block to.</param> | ||||
|       <param name="byteCount">The number of bytes to initialize.</param> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned(System.Void*,System.Byte,System.UInt32)"> | ||||
|       <summary>Initializes a block of memory at the given location with a given initial value  | ||||
| without assuming architecture dependent alignment of the address.</summary> | ||||
|       <param name="startAddress">The address of the start of the memory block to initialize.</param> | ||||
|       <param name="value">The value to initialize the block to.</param> | ||||
|       <param name="byteCount">The number of bytes to initialize.</param> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.Read``1(System.Void*)"> | ||||
|       <summary>Reads a value of type <typeparamref name="T">T</typeparamref> from the given location.</summary> | ||||
|       <param name="source">The location to read from.</param> | ||||
|       <typeparam name="T">The type to read.</typeparam> | ||||
|       <returns>An object of type <typeparamref name="T">T</typeparamref> read from the given location.</returns> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.ReadUnaligned``1(System.Byte@)"> | ||||
|       <summary>Reads a value of type <typeparamref name="T">T</typeparamref> from the given location | ||||
| without assuming architecture dependent alignment of the addresses.</summary> | ||||
|       <param name="source">The location to read from.</param> | ||||
|       <typeparam name="T">The type to read.</typeparam> | ||||
|       <returns>An object of type <typeparamref name="T">T</typeparamref> read from the given location.</returns> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.ReadUnaligned``1(System.Void*)"> | ||||
|       <summary>Reads a value of type <typeparamref name="T">T</typeparamref> from the given location | ||||
| without assuming architecture dependent alignment of the addresses.</summary> | ||||
|       <param name="source">The location to read from.</param> | ||||
|       <typeparam name="T">The type to read.</typeparam> | ||||
|       <returns>An object of type <typeparamref name="T">T</typeparamref> read from the given location.</returns> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.SizeOf``1"> | ||||
|       <summary>Returns the size of an object of the given type parameter.</summary> | ||||
|       <typeparam name="T">The type of object whose size is retrieved.</typeparam> | ||||
|       <returns>The size of an object of type <typeparamref name="T">T</typeparamref>.</returns> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.Subtract``1(``0@,System.Int32)"> | ||||
|       <summary>Subtracts an element offset from the given reference.</summary> | ||||
|       <param name="source">The reference to subtract the offset from.</param> | ||||
|       <param name="elementOffset">The offset to subtract.</param> | ||||
|       <typeparam name="T">The type of reference.</typeparam> | ||||
|       <returns>A new reference that reflects the subraction of offset from pointer.</returns> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.Subtract``1(``0@,System.IntPtr)"> | ||||
|       <summary>Subtracts an element offset from the given reference.</summary> | ||||
|       <param name="source">The reference to subtract the offset from.</param> | ||||
|       <param name="elementOffset">The offset to subtract.</param> | ||||
|       <typeparam name="T">The type of reference.</typeparam> | ||||
|       <returns>A new reference that reflects the subraction of offset from pointer.</returns> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.SubtractByteOffset``1(``0@,System.IntPtr)"> | ||||
|       <summary>Subtracts a byte offset from the given reference.</summary> | ||||
|       <param name="source">The reference to subtract the offset from.</param> | ||||
|       <param name="byteOffset"></param> | ||||
|       <typeparam name="T">The type of reference.</typeparam> | ||||
|       <returns>A new reference that reflects the subraction of byte offset from pointer.</returns> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.Write``1(System.Void*,``0)"> | ||||
|       <summary>Writes a value of type <typeparamref name="T">T</typeparamref> to the given location.</summary> | ||||
|       <param name="destination">The location to write to.</param> | ||||
|       <param name="value">The value to write.</param> | ||||
|       <typeparam name="T">The type of value to write.</typeparam> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.WriteUnaligned``1(System.Byte@,``0)"> | ||||
|       <summary>Writes a value of type <typeparamref name="T">T</typeparamref> to the given location | ||||
| without assuming architecture dependent alignment of the addresses.</summary> | ||||
|       <param name="destination">The location to write to.</param> | ||||
|       <param name="value">The value to write.</param> | ||||
|       <typeparam name="T">The type of value to write.</typeparam> | ||||
|     </member> | ||||
|     <member name="M:System.Runtime.CompilerServices.Unsafe.WriteUnaligned``1(System.Void*,``0)"> | ||||
|       <summary>Writes a value of type <typeparamref name="T">T</typeparamref> to the given location | ||||
| without assuming architecture dependent alignment of the addresses.</summary> | ||||
|       <param name="destination">The location to write to.</param> | ||||
|       <param name="value">The value to write.</param> | ||||
|       <typeparam name="T">The type of value to write.</typeparam> | ||||
|     </member> | ||||
|   </members> | ||||
| </doc> | ||||
							
								
								
									
										582
									
								
								bin/Release_2.85/proto/message.proto
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										582
									
								
								bin/Release_2.85/proto/message.proto
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,582 @@ | ||||
| syntax = "proto3"; | ||||
| 
 | ||||
| message Response{ | ||||
|     repeated Message messages = 1; | ||||
|     string cursor = 2; | ||||
|     int64 fetchInterval = 3; | ||||
|     int64 now = 4; | ||||
|     string internalExt = 5; | ||||
|     int32 fetchType = 6; | ||||
|     map<string, string> routeParams = 7; | ||||
|     int64 heartbeatDuration = 8; | ||||
|     bool needAck = 9; | ||||
|     string pushServer = 10; | ||||
|     string liveCursor = 11; | ||||
|     bool historyNoMore = 12; | ||||
| } | ||||
| 
 | ||||
| message Message{ | ||||
|     string method = 1; | ||||
|     bytes payload = 2; | ||||
|     int64 msgId = 3; | ||||
|     int32 msgType = 4; | ||||
|     int64 offset = 5; | ||||
| } | ||||
| 
 | ||||
| message RoomUserSeqMessage { | ||||
|     Common common = 1; | ||||
|     repeated Contributor ranks = 2; | ||||
|     int64 total = 3; | ||||
|     string popStr = 4; | ||||
|     repeated Contributor seats = 5; | ||||
|     int64 popularity = 6; | ||||
|     int64 totalUser = 7; | ||||
|     string totalUserStr = 8; | ||||
|     string totalStr = 9; | ||||
|     string onlineUserForAnchor = 10; | ||||
|     string totalPvForAnchor = 11; | ||||
| 
 | ||||
|     message Contributor { | ||||
|         int64 score = 1; | ||||
|         User user = 2; | ||||
|         int64 rank = 3; | ||||
|         int64 delta = 4; | ||||
|         bool isHidden = 5; | ||||
|         string scoreDescription = 6; | ||||
|         string exactlyScore = 7; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| message GiftMessage { | ||||
|     Common common = 1; | ||||
|     int64 giftId = 2; | ||||
|     int64 fanTicketCount = 3; | ||||
|     int64 groupCount = 4; | ||||
|     int64 repeatCount = 5; | ||||
|     int64 comboCount = 6; | ||||
|     User user = 7; | ||||
|     User toUser = 8; | ||||
|     int32 repeatEnd = 9; | ||||
|     TextEffect textEffect = 10; | ||||
|     int64 groupId = 11; | ||||
|     int64 incomeTaskgifts = 12; | ||||
|     int64 roomFanTicketCount = 13; | ||||
|     GiftIMPriority priority = 14; | ||||
|     GiftStruct gift = 15; | ||||
|     string logId = 16; | ||||
|     int64 sendType = 17; | ||||
|     PublicAreaCommon publicAreaCommon = 18; | ||||
|     Text trayDisplayText = 19; | ||||
|     int64 bannedDisplayEffects = 20; | ||||
|     GiftTrayInfo trayInfo = 21; | ||||
|     AssetEffectMixInfo assetEffectMixInfo = 24; | ||||
| 
 | ||||
|     message TextEffect{ | ||||
|         Detail portrait = 1; | ||||
|         Detail landscape = 2; | ||||
| 
 | ||||
|         message Detail { | ||||
|             Text text = 1; | ||||
|             int32 textFontSize = 2; | ||||
|             Image background = 3; | ||||
|             int32 start = 4; | ||||
|             int32 duration = 5; | ||||
|             int32 x = 6; | ||||
|             int32 y = 7; | ||||
|             int32 width = 8; | ||||
|             int32 height = 9; | ||||
|             int32 shadowDx = 10; | ||||
|             int32 shadowDy = 11; | ||||
|             int32 shadowRadius = 12; | ||||
|             string shadowColor = 13; | ||||
|             string strokeColor = 14; | ||||
|             int32 strokeWidth = 15; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| message LikeMessage { | ||||
|    Common common = 1;  | ||||
|    int64 count = 2; | ||||
|    int64 total = 3; | ||||
|    int64 color = 4; | ||||
|    User user = 5; | ||||
|    string icon = 6; | ||||
| } | ||||
| 
 | ||||
| message ChatMessage { | ||||
|     Common common = 1; | ||||
|     User user = 2; | ||||
|     string content = 3; | ||||
|     bool visibleToSender = 4; | ||||
|     Image backgroundImage = 5; | ||||
|     string fullScreenTextColor = 6; | ||||
|     Image backgroundImageV2 = 7; | ||||
|     PublicAreaCommon publicAreaCommon = 9; | ||||
|     Image giftImage = 10; | ||||
| } | ||||
| 
 | ||||
| message SocialMessage { | ||||
|     Common common = 1; | ||||
|     User user = 2; | ||||
|     int64 shareType = 3; | ||||
|     int64 action = 4; | ||||
|     string shareTarget = 5; | ||||
|     int64 followCount = 6; | ||||
|     PublicAreaCommon publicAreaCommon = 7; | ||||
| } | ||||
| 
 | ||||
| message MemberMessage{ | ||||
|     Common common = 1; | ||||
|     User user = 2; | ||||
|     int64 memberCount = 3; | ||||
|     User operator = 4; | ||||
|     bool isSetToAdmin = 5; | ||||
|     bool isTopUser = 6; | ||||
|     int64 rankScore = 7; | ||||
|     int64 topUserNo = 8; | ||||
|     int64 enterType = 9; | ||||
|     int64 action = 10; | ||||
|     string actionDescription = 11; | ||||
|     int64 userId = 12; | ||||
|     EffectConfig effectConfig = 13; | ||||
|     string popStr = 14; | ||||
|     EffectConfig enterEffectConfig = 15; | ||||
|     Image backgroundImage = 16; | ||||
|     Image backgroundImageV2 = 17; | ||||
|     Text anchorDisplayText = 18; | ||||
|     PublicAreaCommon publicAreaCommon = 19; | ||||
| 
 | ||||
|     message EffectConfig{ | ||||
|         int64 type = 1; | ||||
|         Image icon = 2; | ||||
|         int64 avatarPos = 3; | ||||
|         Text text = 4; | ||||
|         Image textIcon = 5; | ||||
|         int32 stayTime = 6; | ||||
|         int64 animAssetId = 7; | ||||
|         Image badge = 8; | ||||
|         repeated int64 flexSettingArray = 9; | ||||
|         Image textIconOverlay = 10; | ||||
|         Image animatedBadge = 11; | ||||
|         bool hasSweepLight = 12; | ||||
|         repeated int64 textFlexSettingArray = 13; | ||||
|         int64 centerAnimAssetId = 14; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| message ControlMessage { | ||||
|     Common common = 1; | ||||
|     int32 status = 2; | ||||
| } | ||||
| 
 | ||||
| message FansclubMessage { | ||||
| 	Common commonInfo = 1; | ||||
| 	// 升级是1,加入是2 | ||||
| 	int32 type = 2; | ||||
| 	string content = 3; | ||||
| 	User user = 4; | ||||
| } | ||||
| 
 | ||||
| message Common{ | ||||
|     string method = 1; | ||||
|     int64 msgId = 2; | ||||
|     int64 roomId = 3; | ||||
|     int64 createTime = 4; | ||||
|     int32 monitor = 5; | ||||
|     bool isShowMsg = 6; | ||||
|     string describe = 7; | ||||
|     Text displayText = 8; | ||||
|     int64 foldType = 9; | ||||
|     int64 anchorFoldType = 10; | ||||
|     int64 priorityScore = 11; | ||||
|     string logId = 12; | ||||
|     string msgProcessFilterK = 13; | ||||
|     string msgProcessFilterV = 14; | ||||
|     User user = 15; | ||||
|     Room room = 16; | ||||
|     int64 anchorFoldTypeV2 = 17; | ||||
|     int64 processAtSeiTimeMs = 18; | ||||
| } | ||||
| 
 | ||||
| message Text{ | ||||
|     string key = 1; | ||||
|     string defaultPattern = 2; | ||||
|     TextFormat defaultFormat = 3; | ||||
|     repeated TextPiece pieces = 4; | ||||
| } | ||||
| 
 | ||||
| message Room { | ||||
|     int64 id = 1; | ||||
|     string idStr = 2; | ||||
|     int64 status = 3; | ||||
|     int64 ownerUserId = 4; | ||||
|     string title = 5; | ||||
|     int64 userCount = 6; | ||||
|     int64 createTime = 7; | ||||
|     int64 linkmicLayout = 8; | ||||
|     int64 finishTime = 9; | ||||
|     RoomExtra extra = 10; | ||||
|     string dynamicCoverUri = 11; | ||||
|     map<int64, string> dynamicCoverDict = 12; | ||||
|     int64 lastPingTime = 13; | ||||
|     int64 liveId = 14; | ||||
|     int64 streamProvider = 15; | ||||
|     int64 osType = 16; | ||||
|     int64 clientVersion = 17; | ||||
|     bool withLinkmic = 18; | ||||
|     bool enableRoomPerspective = 19; | ||||
|     Image cover = 20; | ||||
|     Image dynamicCover = 21; | ||||
|     Image dynamicCoverLow = 22; | ||||
|     string shareUrl = 23; | ||||
|     string anchorShareText = 24; | ||||
|     string userShareText = 25; | ||||
|     int64 streamId = 26; | ||||
|     string streamIdStr = 27; | ||||
|     StreamUrl streamUrl = 28; | ||||
|     int64 mosaicStatus = 29; | ||||
|     string mosaicTip = 30; | ||||
|     int64 cellStyle = 31; | ||||
|     LinkMic linkMic = 32; | ||||
|     int64 luckymoneyNum = 33; | ||||
|     repeated Decoration decoList = 34; | ||||
|     repeated TopFan topFans = 35; | ||||
|     RoomStats stats = 36; | ||||
|     string sunDailyIconContent = 37; | ||||
|     string distance = 38; | ||||
|     string distanceCity = 39; | ||||
|     string location = 40; | ||||
|     string realDistance = 41; | ||||
|     Image feedRoomLabel = 42; | ||||
|     string commonLabelList = 43; | ||||
|     RoomUserAttr livingRoomAttrs = 44; | ||||
|     repeated int64 adminUserIds = 45; | ||||
|     User owner = 46; | ||||
|     string privateInfo = 47; | ||||
| } | ||||
| 
 | ||||
| message RoomExtra{ | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| message RoomStats{ | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| message RoomUserAttr{ | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| message StreamUrl{ | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| message LinkMic { | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| message Decoration{ | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| message TopFan { | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| message User{ | ||||
|     int64 id = 1; | ||||
|     int64 shortId = 2; | ||||
|     string nickname = 3; | ||||
|     int32 gender = 4; | ||||
|     string signature = 5; | ||||
|     int32 level = 6; | ||||
|     int64 birthday = 7; | ||||
|     string telephone = 8; | ||||
|     Image avatarThumb = 9; | ||||
|     Image avatarMedium = 10; | ||||
|     Image avatarLarge = 11; | ||||
|     bool verified = 12; | ||||
|     int32 experience = 13; | ||||
|     string city = 14; | ||||
|     int32 status = 15; | ||||
|     int64 createTime = 16; | ||||
|     int64 modifyTime = 17; | ||||
|     int32 secret = 18; | ||||
|     string shareQrcodeUri = 19; | ||||
|     int32 incomeSharePercent = 20; | ||||
|     Image badgeImageList = 21; | ||||
|     FollowInfo followInfo = 22; | ||||
|     PayGrade payGrade = 23; | ||||
|     FansClub fansClub = 24; | ||||
|     Border border = 25; | ||||
|     string specialId = 26; | ||||
|     Image avatarBorder = 27; | ||||
|     Image medal = 28; | ||||
|     repeated Image realTimeIcons = 29; | ||||
|     repeated Image newRealTimeIcons = 30; | ||||
|     int64 topVipNo = 31; | ||||
|     UserAttr userAttr = 32; | ||||
|     OwnRoom ownRoom = 33; | ||||
|     int64 payScore = 34; | ||||
|     int64 ticketCount = 35; | ||||
|     AnchorInfo anchorInfo = 36; | ||||
|     int32 linkMicStats = 37; | ||||
|     string displayId = 38; | ||||
| 
 | ||||
|     message UserAttr { | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     message OwnRoom { | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     message AnchorInfo { | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     message FollowInfo { | ||||
|         int64 followingCount = 1; | ||||
|         int64 followerCount = 2; | ||||
|         int64 followStatus = 3; | ||||
|         int64 pushStatus = 4; | ||||
|         string remarkName = 5; | ||||
|     } | ||||
| 
 | ||||
|     message FansClub{ | ||||
|         FansClubData data = 1; | ||||
|         map<int32, FansClubData> preferData = 2; | ||||
| 
 | ||||
|         message FansClubData { | ||||
|             string clubName = 1; | ||||
|             int32 level = 2; | ||||
|             int32 userFansClubStatus = 3; | ||||
|             UserBadge badge = 4; | ||||
|             repeated int64 availableGiftIds = 5; | ||||
|             int64 anchorId = 6; | ||||
| 
 | ||||
|             message UserBadge { | ||||
|                 map<int32, Image> icons = 1; | ||||
|                 string title = 2; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     message Border{ | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     message GradeBuffInfo { | ||||
|         int64 buffLevel = 1; | ||||
|         int32 status = 2; | ||||
|         int64 endTime = 3; | ||||
|         map<int64, int64> statsInfo = 4; | ||||
|         Image buffBadge = 5; | ||||
|     } | ||||
| 
 | ||||
|     message PayGrade { | ||||
|         int64 totalDiamondCount = 1; | ||||
|         Image diamondIcon = 2; | ||||
|         string name = 3; | ||||
|         Image icon = 4; | ||||
|         string nextName = 5; | ||||
|         int64 level = 6; | ||||
|         Image nextIcon = 7; | ||||
|         int64 nextDiamond = 8; | ||||
|         int64 nowDiamond = 9; | ||||
|         int64 thisGradeMinDiamond = 10; | ||||
|         int64 thisGradeMaxDiamond = 11; | ||||
|         int64 payDiamondBak = 12; | ||||
|         string gradeDescribe = 13; | ||||
|         repeated GradeIcon gradeIconList = 14; | ||||
|         int64 screenChatType = 15; | ||||
|         Image imIcon = 16; | ||||
|         Image imIconWithLevel = 17; | ||||
|         Image liveIcon = 18; | ||||
|         Image newImIconWithLevel = 19; | ||||
|         Image newLiveIcon = 20; | ||||
|         int64 upgradeNeedConsume = 21; | ||||
|         string nextPrivileges = 22; | ||||
|         Image background = 23; | ||||
|         Image backgroundBack = 24; | ||||
|         int64 score = 25; | ||||
|         GradeBuffInfo buffInfo = 26; | ||||
|         string gradeBanner = 1001; | ||||
|         Image profileDialogBg = 1002; | ||||
|         Image profileDialogBgBack = 1003; | ||||
| 
 | ||||
|         message GradeIcon{ | ||||
|             Image icon = 1; | ||||
|             int64 iconDiamond = 2; | ||||
|             int64 level = 3; | ||||
|             string levelStr = 4; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| message TextFormat{ | ||||
|     string color = 1; | ||||
|     bool bold = 2; | ||||
|     bool italic = 3; | ||||
|     int32 weight = 4; | ||||
|     int32 italicAngle = 5; | ||||
|     int32 fontSize = 6; | ||||
|     bool userHeightLightColor = 7; | ||||
|     bool useRemoteClor = 8; | ||||
| } | ||||
| 
 | ||||
| message TextPiece{ | ||||
|     int32 type = 1; | ||||
|     TextFormat format = 2; | ||||
|     string stringValue = 11; | ||||
|     TextPieceUser userValue = 21; | ||||
| } | ||||
| 
 | ||||
| message Image{ | ||||
|     repeated string urlList = 1; | ||||
|     string uri = 2; | ||||
|     int64 height = 3; | ||||
|     int64 width = 4; | ||||
|     string avgColor = 5; | ||||
|     int32 imageType = 6; | ||||
|     string openWebUrl = 7; | ||||
|     Content content = 8; | ||||
|     bool isAnimated = 9; | ||||
| 
 | ||||
|     message Content { | ||||
|         string name = 1; | ||||
|         string fontColor = 2; | ||||
|         int64 level = 3; | ||||
|         string alternativeText = 4; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| message TextPieceUser{ | ||||
|     User user = 1; | ||||
|     bool withColon = 2; | ||||
| } | ||||
| 
 | ||||
| message PublicAreaCommon { | ||||
|     Image userLabel = 1; | ||||
|     int64 userConsumeInRoom = 2; | ||||
|     int64 userSendGiftCntInRoom = 3; | ||||
| } | ||||
| 
 | ||||
| message GiftIMPriority { | ||||
|     repeated int64 queueSizes = 1; | ||||
|     int64 selfQueuePriority = 2; | ||||
|     int64 priority = 3; | ||||
| } | ||||
| 
 | ||||
| message GiftTrayInfo{ | ||||
|     Text trayDisplayText = 1; | ||||
|     Image trayBaseImg = 2; | ||||
|     Image trayHeadImg = 3; | ||||
|     Image trayRightImg = 4; | ||||
|     int64 trayLevel = 5; | ||||
|     Image trayDynamicImg = 6; | ||||
| } | ||||
| 
 | ||||
| message GiftStruct { | ||||
|     Image image = 1; | ||||
|     string describe = 2; | ||||
|     bool notify = 3; | ||||
|     int64 duration = 4; | ||||
|     int64 id = 5; | ||||
|     GiftStructFansClubInfo fansclubInfo = 6; | ||||
|     bool forLinkmic = 7; | ||||
|     bool doodle = 8; | ||||
|     bool forFansclub = 9; | ||||
|     bool combo = 10; | ||||
|     int32 type = 11; | ||||
|     int32 diamondCount = 12; | ||||
|     int32 isDisplayedOnPanel = 13; | ||||
|     int64 primaryEffectId = 14; | ||||
|     Image giftLabelIcon = 15; | ||||
|     string name = 16; | ||||
|     string region = 17; | ||||
|     string manual = 18; | ||||
|     bool forCustom = 19; | ||||
|     map<string, int64> specialEffects = 20; | ||||
|     Image icon = 21; | ||||
|     int32 actionType = 22; | ||||
|     int32 watermelonSeeds = 23; | ||||
|     string goldEffect = 24; | ||||
|     repeated LuckyMoneyGiftMeta subs = 25; | ||||
|     int64 goldenBeans = 26; | ||||
|     int64 honorLevel = 27; | ||||
|     int32 itemType = 28; | ||||
|     string schemeUrl = 29; | ||||
|     GiftPanelOperation giftOperation = 30; | ||||
|     string eventName = 31; | ||||
|     int64 nobleLevel = 32;  | ||||
|     string guideUrl = 33; | ||||
|     bool punishMedicine = 34; | ||||
|     bool forPortal = 35; | ||||
|     string businessText = 36; | ||||
|     bool cnyGift = 37; | ||||
|     int64 appId = 38; | ||||
|     int64 vipLevel = 39; | ||||
|     bool isGray = 40; | ||||
|     string graySchemeUrl = 41; | ||||
|     int64 giftScene = 42; | ||||
|     GiftBanner giftBanner = 43; | ||||
|     repeated string triggerWords = 44; | ||||
|     repeated GiftBuffInfo giftBuffInfos = 45; | ||||
|     bool forFirstRecharge = 46; | ||||
|     Image dynamicImgForSelected = 47; | ||||
|     int32 afterSendAction = 48; | ||||
|     int64 giftOfflineTime = 49; | ||||
|     string topBarText = 50; | ||||
|     Image topRightAvatar = 51; | ||||
|     string bannerSchemeUrl = 52; | ||||
|     bool isLocked = 53; | ||||
|     int64 reqExtraType = 54; | ||||
|     repeated int64 assetIds = 55; | ||||
|     GiftPreviewInfo giftPreviewInfo = 56; | ||||
|     GiftTip giftTip = 57; | ||||
|     int32 needSweepLightCount = 58; | ||||
|     repeated GiftGroupInfo groupInfo = 59; | ||||
| 
 | ||||
|     message GiftStructFansClubInfo { | ||||
|         int32 minLevel = 1; | ||||
|         int32 insertPos = 2; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| message AssetEffectMixInfo{ | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| message LuckyMoneyGiftMeta { | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| message GiftPanelOperation { | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| message GiftBanner { | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| message GiftBuffInfo{ | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| message GiftPreviewInfo{ | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| message GiftTip { | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| message GiftGroupInfo { | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| message EffectMixImageInfo { | ||||
|      | ||||
| } | ||||
							
								
								
									
										12
									
								
								bin/Release_2.85/proto/wss.proto
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								bin/Release_2.85/proto/wss.proto
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | ||||
| syntax = "proto3"; | ||||
| 
 | ||||
| message WssResponse{ | ||||
|   uint64 seqid = 1; | ||||
|   uint64 logid = 2; | ||||
|   uint64 service = 3; | ||||
|   uint64 method = 4; | ||||
|   map<string,string> headers = 5; | ||||
|   string payloadEncoding = 6; | ||||
|   string payloadType = 7; | ||||
|   bytes payload = 8; | ||||
| } | ||||
							
								
								
									
										
											BIN
										
									
								
								bin/Release_2.85/protobuf-net.Core.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/Release_2.85/protobuf-net.Core.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										4443
									
								
								bin/Release_2.85/protobuf-net.Core.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4443
									
								
								bin/Release_2.85/protobuf-net.Core.xml
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/Release_2.85/protobuf-net.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/Release_2.85/protobuf-net.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										1437
									
								
								bin/Release_2.85/protobuf-net.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1437
									
								
								bin/Release_2.85/protobuf-net.xml
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/Release_2.85/v2.85.exe
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/Release_2.85/v2.85.exe
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										24
									
								
								bin/Release_2.85/v2.85.exe.config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								bin/Release_2.85/v2.85.exe.config
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,24 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <configuration> | ||||
|   <appSettings> | ||||
|     <!--过滤Websocket数据源进程,可用','进行分隔,程序将会监听以下进程的弹幕信息--> | ||||
|     <add key="filterProcess" value="直播伴侣,chrome,msedge" /> | ||||
|     <!--Websocket监听端口--> | ||||
|     <add key="wsListenPort" value="8888" /> | ||||
|     <!--在控制台输出弹幕--> | ||||
|     <add key="printBarrage" value="on" /> | ||||
|     <add key="ClientSettingsProvider.ServiceUri" value="" /> | ||||
|   </appSettings> | ||||
|   <system.web> | ||||
|     <membership defaultProvider="ClientAuthenticationMembershipProvider"> | ||||
|       <providers> | ||||
|         <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" /> | ||||
|       </providers> | ||||
|     </membership> | ||||
|     <roleManager defaultProvider="ClientRoleProvider" enabled="true"> | ||||
|       <providers> | ||||
|         <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" /> | ||||
|       </providers> | ||||
|     </roleManager> | ||||
|   </system.web> | ||||
| </configuration> | ||||
							
								
								
									
										
											BIN
										
									
								
								bin/Release_2.85/v2.85.pdb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/Release_2.85/v2.85.pdb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -21,7 +21,7 @@ | ||||
|             "indifferent": 10, | ||||
|             "join": 10 | ||||
|         }, | ||||
|         "playSound": false | ||||
|         "playSound": true | ||||
|     }, | ||||
|     "items": [ | ||||
|         { | ||||
| @ -42,11 +42,11 @@ | ||||
|     "source": { | ||||
|         "liveRoom": { | ||||
|             "enabled": false, | ||||
|             "url": "https://v.douyin.com/hL6ehu8/" | ||||
|             "url": "\u65b0\u7248\u672c\u4e0d\u7528\u586b\u5199" | ||||
|         }, | ||||
|         "record": { | ||||
|             "device": "", | ||||
|             "enabled": true | ||||
|             "enabled": false | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -255,10 +255,6 @@ class FeiFei: | ||||
|                                 else: | ||||
|                                     raise RuntimeError('讯飞key、yuan key、chatgpt key都没有配置!')     | ||||
|                                 util.log(1, '自然语言处理完成. 耗时: {} ms'.format(math.floor((time.time() - tm) * 1000))) | ||||
|                                 #同步文字内容给ue5 | ||||
|                                 if text is not None and not config_util.config["interact"]["playSound"]: # 非展板播放 | ||||
|                                     content = {'Topic': 'Unreal', 'Data': {'Key': 'text', 'Value': text}} | ||||
|                                     wsa_server.get_instance().add_cmd(content) | ||||
|                                 if text == '哎呀,你这么说我也不懂,详细点呗' or text == '': | ||||
|                                     util.log(1, '[!] 自然语言无语了!') | ||||
|                                     wsa_server.get_web_instance().add_cmd({"panelMsg": ""}) | ||||
| @ -477,6 +473,10 @@ class FeiFei: | ||||
|                 MyThread(target=storer.storage_live_interact, args=[Interact('Fay', 0, {'user': 'Fay', 'msg': self.a_msg})]).start() | ||||
|                 util.log(1, '合成音频...') | ||||
|                 tm = time.time() | ||||
|                 #文字也推送出去,为了ue5 | ||||
|                 if not config_util.config["interact"]["playSound"]: # 非展板播放 | ||||
|                     content = {'Topic': 'Unreal', 'Data': {'Key': 'text', 'Value': self.a_msg}} | ||||
|                     wsa_server.get_instance().add_cmd(content) | ||||
|                 result = self.sp.to_sample(self.a_msg, self.__get_mood()) | ||||
|                 util.log(1, '合成音频完成. 耗时: {} ms 文件:{}'.format(math.floor((time.time() - tm) * 1000), result)) | ||||
|                 if result is not None:             | ||||
|  | ||||
							
								
								
									
										139
									
								
								core/viewer.py
									
									
									
									
									
								
							
							
						
						
									
										139
									
								
								core/viewer.py
									
									
									
									
									
								
							| @ -8,6 +8,11 @@ from selenium.webdriver.common.by import By | ||||
| from selenium.webdriver.chrome.options import Options | ||||
| from selenium.webdriver.support.ui import WebDriverWait | ||||
| from selenium.webdriver.support.expected_conditions import presence_of_element_located | ||||
| import websocket | ||||
| import ssl | ||||
| import subprocess | ||||
| import os | ||||
| import winreg | ||||
| 
 | ||||
| from core.interact import Interact | ||||
| from scheduler.thread_manager import MyThread | ||||
| @ -15,6 +20,52 @@ from utils import config_util, util | ||||
| 
 | ||||
| USER_URL = 'https://www.douyin.com/user/' | ||||
| 
 | ||||
| interact_datas = [] | ||||
| class WS_Client: | ||||
|     def __init__(self, host): | ||||
|         self.__ws = None | ||||
|         self.__host = host | ||||
|         self.__connect(host) | ||||
|   | ||||
| 
 | ||||
|     # 收到websocket消息的处理 | ||||
|     def on_message(self, ws, message): | ||||
|         try: | ||||
|              | ||||
|             data = json.loads(message) | ||||
|             if data["Type"] == 1:#留言 | ||||
|                 if len(interact_datas) >= 5: | ||||
|                     interact_datas.pop() | ||||
|                 interact = Interact("live", 1, {"user": json.loads(data["Data"])["User"]["Nickname"], "msg": json.loads(data["Data"])["Content"]}) | ||||
|                 interact_datas.append(interact) | ||||
|             if data["Type"] == 3:#进入 | ||||
|                 if len(interact_datas) >= 5: | ||||
|                     interact_datas.pop() | ||||
|                 interact_datas.append(Interact("live", 2, {"user": json.loads(data["Data"])["User"]["Nickname"], "msg": "来了"})) | ||||
|             #... | ||||
|         except Exception as e: | ||||
|             pass | ||||
| 
 | ||||
|     # 收到websocket错误的处理 | ||||
|     def on_close(self, ws, code, msg): | ||||
|         pass | ||||
| 
 | ||||
|     # 收到websocket错误的处理 | ||||
|     def on_error(self, ws, error): | ||||
|         time.sleep(5) | ||||
|         self.__connect(self.__host) | ||||
| 
 | ||||
|     # 收到websocket连接建立的处理 | ||||
|     def on_open(self, ws): | ||||
|         pass | ||||
|     def __connect(self, host): | ||||
|         websocket.enableTrace(False) | ||||
|         self.__ws = websocket.WebSocketApp(host, on_message=self.on_message) | ||||
|         self.__ws.on_open = self.on_open | ||||
|         self.__ws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE}) | ||||
|     def close(self): | ||||
|         self.__ws.close() | ||||
| 
 | ||||
| 
 | ||||
| class Viewer: | ||||
| 
 | ||||
| @ -37,21 +88,53 @@ class Viewer: | ||||
|         self.last_interact_datas = [] | ||||
|         self.live_started = False | ||||
|         self.last_chat_item_index = 0 | ||||
|         self.dy_msg_ws = None | ||||
|         self.exe_process = None | ||||
| 
 | ||||
|     def __start(self): | ||||
|         MyThread(target=self.__driver_alive_runnable).start() | ||||
|         MyThread(target=self.__run_dy_msg_ws).start() #获取抖音监听内容 | ||||
|         # MyThread(target=self.__driver_alive_runnable).start()#直播浏览器运行 | ||||
|         self.chrome_options = Options() | ||||
|         chrome_profile_path = "C:/Users/Administrator/AppData/Local/Google/Chrome/User Data"#视实际情况修改 | ||||
|         self.chrome_options.add_argument(f"user-data-dir={chrome_profile_path}") | ||||
|         self.chrome_options.add_argument('--ignore-certificate-errors') | ||||
|         self.chrome_options.add_argument('--allow-insecure-localhost') | ||||
|         self.chrome_options.add_argument('--no-sandbox')  # 解决沙箱模式下的限制问题 | ||||
|         self.chrome_options.add_argument('--disable-dev-shm-usage')  # 解决共享内存不足的问题 | ||||
|         self.chrome_options.add_argument('--disable-gpu')  # 禁用GPU加速 | ||||
|         self.chrome_options.add_argument('--disable-extensions')  # 禁用扩展程序 | ||||
|         self.chrome_options.add_argument('--disable-notifications') | ||||
|         self.chrome_options.add_argument('--disable-popup-blocking') | ||||
|         self.chrome_options.add_argument('--disable-infobars') | ||||
|         self.chrome_options.add_argument("--log-level=3")  # 只记录错误级别的消息 | ||||
| 
 | ||||
|          | ||||
|         #隐藏浏览器 | ||||
|         # self.chrome_options.add_argument('--headless') | ||||
|         # self.chrome_options.add_argument('--blink-settings=imagesEnabled=false') | ||||
|         self.live_driver = webdriver.Chrome(config_util.system_chrome_driver, options=self.chrome_options) | ||||
|         self.live_driver.get(self.url) | ||||
|         # self.live_driver = webdriver.Chrome(config_util.system_chrome_driver, options=self.chrome_options) | ||||
|         # self.live_driver.set_page_load_timeout(60) | ||||
|         # self.live_driver.get(self.url) | ||||
|         # self.user_driver = webdriver.Chrome(config_util.system_chrome_driver, options=self.chrome_options)#抖音加了验证码,暂时不获取粉丝数 | ||||
|         self.__wait_live_start() | ||||
|         self.user_sec_uid = self.__get_render_data(self.live_driver)['app']['initialState']['roomStore']['roomInfo']['room']['owner']['sec_uid'] | ||||
|         MyThread(target=self.__live_state_runnable).start() | ||||
|         MyThread(target=self.__join_runnable).start() | ||||
|         MyThread(target=self.__interact_runnable).start() | ||||
|         # MyThread(target=self.__follower_runnable).start() #抖音加了验证码,暂时不获取粉丝数 | ||||
|         # self.__wait_live_start()#等待开播 | ||||
|         # self.user_sec_uid = self.__get_render_data(self.live_driver)['app']['initialState']['roomStore']['roomInfo']['room']['owner']['sec_uid'] | ||||
|         # MyThread(target=self.__live_state_runnable).start()#监测直播状态 | ||||
|         # MyThread(target=self.__join_runnable).start()#selenium监测粉丝进入 | ||||
|         # MyThread(target=self.__interact_runnable).start()#selenium监测直播间互动:留言、送礼 | ||||
|         # MyThread(target=self.__follower_runnable).start() #selenium监测粉丝变化 | ||||
|         self.live_started = True | ||||
|         MyThread(target=self.__get_package_listen_interact_runnable).start() | ||||
| 
 | ||||
|     def __run_dy_msg_ws(self): | ||||
|         exe_path = "./bin/Release_2.85/v2.85.exe" | ||||
|         self.exe_process = subprocess.Popen([exe_path])  | ||||
|         while self.__running: | ||||
|             try: | ||||
|                 self.dy_msg_ws = WS_Client('ws://127.0.0.1:8888') | ||||
|             except Exception as e: | ||||
|                 print(e) | ||||
|                 time.sleep(5) | ||||
| 
 | ||||
| 
 | ||||
|     def start(self): | ||||
|         MyThread(target=self.__start).start() | ||||
| @ -60,6 +143,7 @@ class Viewer: | ||||
|         return self.live_started | ||||
| 
 | ||||
|     def __wait_live_start(self): | ||||
|         time.sleep(30) | ||||
|         if self.__is_live(): | ||||
|             return | ||||
|         util.log(1, '等待直播开始...') | ||||
| @ -255,6 +339,16 @@ class Viewer: | ||||
|             for interact in self.__get_interact_data(): | ||||
|                 MyThread(target=self.on_interact, args=[interact, time.time()]).start() | ||||
|                 # self.on_interact(interact, time.time()) | ||||
|      | ||||
|     #TODO Add by xszyou on 20230412.通过抓包监测互动数据 | ||||
|     def __get_package_listen_interact_runnable(self): | ||||
|         while self.__running: | ||||
|             if not self.live_started: | ||||
|                 continue | ||||
|              | ||||
|             for interact in interact_datas: | ||||
|                 MyThread(target=self.on_interact, args=[interact, time.time()]).start() | ||||
|             interact_datas.clear() | ||||
| 
 | ||||
|     def __follower_runnable(self): | ||||
|         followers = -1 | ||||
| @ -292,6 +386,33 @@ class Viewer: | ||||
|             self.live_driver.quit() | ||||
|         if self.user_driver: | ||||
|             self.user_driver.quit() | ||||
|         if self.dy_msg_ws: | ||||
|             self.dy_msg_ws.close() | ||||
|             self.dy_msg_ws = None | ||||
|             self.disable_windows_proxy() | ||||
|             subprocess.run(["taskkill", "/F", "/PID", str(self.exe_process.pid)]) | ||||
|              | ||||
|      | ||||
|     #关闭系统代理 | ||||
|     def disable_windows_proxy(self): | ||||
|         settings_key = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings' | ||||
|         try: | ||||
|             registry = winreg.ConnectRegistry(None, winreg.HKEY_CURRENT_USER) | ||||
|             settings = winreg.OpenKey(registry, settings_key, 0, winreg.KEY_WRITE) | ||||
|              | ||||
|             # 设置代理启用值为0(禁用) | ||||
|             winreg.SetValueEx(settings, 'ProxyEnable', 0, winreg.REG_DWORD, 0) | ||||
|              | ||||
|             # 清空代理服务器和代理覆盖设置 | ||||
|             winreg.SetValueEx(settings, 'ProxyServer', 0, winreg.REG_SZ, '') | ||||
|             winreg.SetValueEx(settings, 'ProxyOverride', 0, winreg.REG_SZ, '') | ||||
|              | ||||
|             winreg.CloseKey(settings) | ||||
|             winreg.CloseKey(registry) | ||||
|              | ||||
|             util.log(1, '系统代理已关闭。') | ||||
|         except Exception as e: | ||||
|             util.log(1, '关闭系统代理时出错:', e) | ||||
| 
 | ||||
|     @abstractmethod | ||||
|     def on_interact(self, interact, event_time): | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								images/UElucky.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								images/UElucky.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 26 KiB | 
							
								
								
									
										
											BIN
										
									
								
								images/cs.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								images/cs.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 25 KiB | 
							
								
								
									
										
											BIN
										
									
								
								images/gzh.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								images/gzh.jpg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 38 KiB | 
							
								
								
									
										
											BIN
										
									
								
								images/kzq.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								images/kzq.jpg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 418 KiB | 
							
								
								
									
										
											BIN
										
									
								
								images/luoji.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								images/luoji.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 13 KiB | 
							
								
								
									
										19
									
								
								system.conf
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								system.conf
									
									
									
									
									
								
							| @ -1,34 +1,31 @@ | ||||
| [system] | ||||
| # ChromeDriver 路径(必须) | ||||
| chrome_driver=./bin/chromedriver.exe | ||||
| 
 | ||||
| [key] | ||||
| # 阿里云 实时语音识别 服务密钥(必须) | ||||
| # 阿里云 实时语音识别 服务密钥(必须)https://ai.aliyun.com/nls/trans | ||||
| ali_nls_key_id= | ||||
| ali_nls_key_secret= | ||||
| ali_nls_app_key= | ||||
| 
 | ||||
| # 微软 文字转语音 服务密钥(必须) | ||||
| # 微软 文字转语音 服务密钥(非必须,使用可产生不同情绪的音频)https://azure.microsoft.com/zh-cn/services/cognitive-services/text-to-speech/ | ||||
| ms_tts_key= | ||||
| ms_tts_region= | ||||
| 
 | ||||
| # 讯飞 情绪分析 服务密钥 | ||||
| # 讯飞 情绪分析 服务密钥 https://www.xfyun.cn/service/emotion-analysis/ | ||||
| xf_ltp_app_id= | ||||
| xf_ltp_api_key= | ||||
| 
 | ||||
| #NLP三选一:xfaiui、yuan、chatgpt | ||||
| chat_module=xfaiui | ||||
| 
 | ||||
| # 讯飞 自然语言处理 服务密钥(NLP3选1) | ||||
| # 讯飞 自然语言处理 服务密钥(NLP3选1) https://aiui.xfyun.cn/solution/webapi/ | ||||
| xf_aiui_app_id= | ||||
| xf_aiui_api_key= | ||||
| 
 | ||||
| #yuan_1_0 对话机器人 服务密钥(NLP3选1) | ||||
| yuan_1_0_account= | ||||
| #浪.潮源大模型 服务密钥(NLP3选1) https://air.inspur.com/ | ||||
| yuan_1_0_account=  | ||||
| yuan_1_0_phone= | ||||
| 
 | ||||
| #chatgpt 对话机器人 服务密钥(NLP3选1) | ||||
| #gpt 服务密钥(NLP3选1) https://openai.com/ | ||||
| chatgpt_api_key= | ||||
| 
 | ||||
| #ngrok.cc 内网穿透id(非必须) | ||||
| #ngrok内网穿透id,远程设备可以通过互联网连接Fay(非必须)http://ngrok.cc | ||||
| ngrok_cc_id= | ||||
|  | ||||
							
								
								
									
										3
									
								
								test/test_rpa.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								test/test_rpa.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | ||||
| import rpa as r | ||||
| r.init() | ||||
| r.url('https://baidu.com') | ||||
| @ -25,7 +25,6 @@ key_chat_module = None | ||||
| def load_config(): | ||||
|     global config | ||||
|     global system_config | ||||
|     global system_chrome_driver | ||||
|     global key_ali_nls_key_id | ||||
|     global key_ali_nls_key_secret | ||||
|     global key_ali_nls_app_key | ||||
| @ -43,7 +42,6 @@ def load_config(): | ||||
| 
 | ||||
|     system_config = ConfigParser() | ||||
|     system_config.read('system.conf', encoding='UTF-8') | ||||
|     system_chrome_driver = os.path.abspath(system_config.get('system', 'chrome_driver')) | ||||
|     key_ali_nls_key_id = system_config.get('key', 'ali_nls_key_id') | ||||
|     key_ali_nls_key_secret = system_config.get('key', 'ali_nls_key_secret') | ||||
|     key_ali_nls_app_key = system_config.get('key', 'ali_nls_app_key') | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 xszyou
						xszyou