20230423
1、抖音直播互动数据对接更换成系统代理抓包pd解码的方式(运行直播伴侣即可); 2、修复若干逻辑及说明错误。
This commit is contained in:
parent
a42a72081d
commit
d80543684a
450
README.md
450
README.md
@ -6,247 +6,67 @@
|
|||||||
</div>
|
</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 通讯
|
控制器与采用 WebSocket 方式与 UE 通讯
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
下载工程: [https://pan.baidu.com/s/1RBo2Pie6A5yTrCf1cn_Tuw?pwd=ck99](https://pan.baidu.com/s/1RBo2Pie6A5yTrCf1cn_Tuw?pwd=ck99)
|
下载工程: [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)
|
下载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)(已接通)
|
通讯地址: [`ws://127.0.0.1:10002`](ws://127.0.0.1:10002)(已接通)
|
||||||
|
|
||||||
消息格式: 查看 [WebSocket.md](https://github.com/TheRamU/Fay/blob/main/WebSocket.md)
|
消息格式: 查看 [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 # 阿里云 实时语音
|
│ ├── ali_nls.py # 阿里云 实时语音
|
||||||
│ ├── ms_tts_sdk.py # 微软 文本转语音
|
│ ├── ms_tts_sdk.py # 微软 文本转语音
|
||||||
│ ├── xf_aiui.py # 讯飞 人机交互-自然语言处理
|
│ ├── xf_aiui.py # 讯飞 人机交互-自然语言处理
|
||||||
|
│ ├── chatgpt.py # gpt3.5对接
|
||||||
|
│ ├── yuan_1_0.py # 浪潮.源大模型对接
|
||||||
│ └── xf_ltp.py # 讯飞 性感分析
|
│ └── xf_ltp.py # 讯飞 性感分析
|
||||||
├── bin # 可执行文件目录
|
├── bin # 可执行文件目录
|
||||||
├── core # 数字人核心
|
├── core # 数字人核心
|
||||||
@ -278,10 +100,198 @@ python main.py
|
|||||||
├── storer.py
|
├── storer.py
|
||||||
└── util.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.Time | 音频时长 (秒) | float | |
|
||||||
| Data.Type | 发言类型 | str | interact/script |
|
| 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,
|
"indifferent": 10,
|
||||||
"join": 10
|
"join": 10
|
||||||
},
|
},
|
||||||
"playSound": false
|
"playSound": true
|
||||||
},
|
},
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
@ -42,11 +42,11 @@
|
|||||||
"source": {
|
"source": {
|
||||||
"liveRoom": {
|
"liveRoom": {
|
||||||
"enabled": false,
|
"enabled": false,
|
||||||
"url": "https://v.douyin.com/hL6ehu8/"
|
"url": "\u65b0\u7248\u672c\u4e0d\u7528\u586b\u5199"
|
||||||
},
|
},
|
||||||
"record": {
|
"record": {
|
||||||
"device": "",
|
"device": "",
|
||||||
"enabled": true
|
"enabled": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -255,10 +255,6 @@ class FeiFei:
|
|||||||
else:
|
else:
|
||||||
raise RuntimeError('讯飞key、yuan key、chatgpt key都没有配置!')
|
raise RuntimeError('讯飞key、yuan key、chatgpt key都没有配置!')
|
||||||
util.log(1, '自然语言处理完成. 耗时: {} ms'.format(math.floor((time.time() - tm) * 1000)))
|
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 == '':
|
if text == '哎呀,你这么说我也不懂,详细点呗' or text == '':
|
||||||
util.log(1, '[!] 自然语言无语了!')
|
util.log(1, '[!] 自然语言无语了!')
|
||||||
wsa_server.get_web_instance().add_cmd({"panelMsg": ""})
|
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()
|
MyThread(target=storer.storage_live_interact, args=[Interact('Fay', 0, {'user': 'Fay', 'msg': self.a_msg})]).start()
|
||||||
util.log(1, '合成音频...')
|
util.log(1, '合成音频...')
|
||||||
tm = time.time()
|
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())
|
result = self.sp.to_sample(self.a_msg, self.__get_mood())
|
||||||
util.log(1, '合成音频完成. 耗时: {} ms 文件:{}'.format(math.floor((time.time() - tm) * 1000), result))
|
util.log(1, '合成音频完成. 耗时: {} ms 文件:{}'.format(math.floor((time.time() - tm) * 1000), result))
|
||||||
if result is not None:
|
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.chrome.options import Options
|
||||||
from selenium.webdriver.support.ui import WebDriverWait
|
from selenium.webdriver.support.ui import WebDriverWait
|
||||||
from selenium.webdriver.support.expected_conditions import presence_of_element_located
|
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 core.interact import Interact
|
||||||
from scheduler.thread_manager import MyThread
|
from scheduler.thread_manager import MyThread
|
||||||
@ -15,6 +20,52 @@ from utils import config_util, util
|
|||||||
|
|
||||||
USER_URL = 'https://www.douyin.com/user/'
|
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:
|
class Viewer:
|
||||||
|
|
||||||
@ -37,21 +88,53 @@ class Viewer:
|
|||||||
self.last_interact_datas = []
|
self.last_interact_datas = []
|
||||||
self.live_started = False
|
self.live_started = False
|
||||||
self.last_chat_item_index = 0
|
self.last_chat_item_index = 0
|
||||||
|
self.dy_msg_ws = None
|
||||||
|
self.exe_process = None
|
||||||
|
|
||||||
def __start(self):
|
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()
|
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('--headless')
|
||||||
# self.chrome_options.add_argument('--blink-settings=imagesEnabled=false')
|
# 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 = webdriver.Chrome(config_util.system_chrome_driver, options=self.chrome_options)
|
||||||
self.live_driver.get(self.url)
|
# 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.user_driver = webdriver.Chrome(config_util.system_chrome_driver, options=self.chrome_options)#抖音加了验证码,暂时不获取粉丝数
|
||||||
self.__wait_live_start()
|
# self.__wait_live_start()#等待开播
|
||||||
self.user_sec_uid = self.__get_render_data(self.live_driver)['app']['initialState']['roomStore']['roomInfo']['room']['owner']['sec_uid']
|
# 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.__live_state_runnable).start()#监测直播状态
|
||||||
MyThread(target=self.__join_runnable).start()
|
# MyThread(target=self.__join_runnable).start()#selenium监测粉丝进入
|
||||||
MyThread(target=self.__interact_runnable).start()
|
# MyThread(target=self.__interact_runnable).start()#selenium监测直播间互动:留言、送礼
|
||||||
# MyThread(target=self.__follower_runnable).start() #抖音加了验证码,暂时不获取粉丝数
|
# 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):
|
def start(self):
|
||||||
MyThread(target=self.__start).start()
|
MyThread(target=self.__start).start()
|
||||||
@ -60,6 +143,7 @@ class Viewer:
|
|||||||
return self.live_started
|
return self.live_started
|
||||||
|
|
||||||
def __wait_live_start(self):
|
def __wait_live_start(self):
|
||||||
|
time.sleep(30)
|
||||||
if self.__is_live():
|
if self.__is_live():
|
||||||
return
|
return
|
||||||
util.log(1, '等待直播开始...')
|
util.log(1, '等待直播开始...')
|
||||||
@ -256,6 +340,16 @@ class Viewer:
|
|||||||
MyThread(target=self.on_interact, args=[interact, time.time()]).start()
|
MyThread(target=self.on_interact, args=[interact, time.time()]).start()
|
||||||
# self.on_interact(interact, time.time())
|
# 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):
|
def __follower_runnable(self):
|
||||||
followers = -1
|
followers = -1
|
||||||
while self.__running:
|
while self.__running:
|
||||||
@ -292,6 +386,33 @@ class Viewer:
|
|||||||
self.live_driver.quit()
|
self.live_driver.quit()
|
||||||
if self.user_driver:
|
if self.user_driver:
|
||||||
self.user_driver.quit()
|
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
|
@abstractmethod
|
||||||
def on_interact(self, interact, event_time):
|
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 |
17
system.conf
17
system.conf
@ -1,34 +1,31 @@
|
|||||||
[system]
|
|
||||||
# ChromeDriver 路径(必须)
|
|
||||||
chrome_driver=./bin/chromedriver.exe
|
|
||||||
|
|
||||||
[key]
|
[key]
|
||||||
# 阿里云 实时语音识别 服务密钥(必须)
|
# 阿里云 实时语音识别 服务密钥(必须)https://ai.aliyun.com/nls/trans
|
||||||
ali_nls_key_id=
|
ali_nls_key_id=
|
||||||
ali_nls_key_secret=
|
ali_nls_key_secret=
|
||||||
ali_nls_app_key=
|
ali_nls_app_key=
|
||||||
|
|
||||||
# 微软 文字转语音 服务密钥(必须)
|
# 微软 文字转语音 服务密钥(非必须,使用可产生不同情绪的音频)https://azure.microsoft.com/zh-cn/services/cognitive-services/text-to-speech/
|
||||||
ms_tts_key=
|
ms_tts_key=
|
||||||
ms_tts_region=
|
ms_tts_region=
|
||||||
|
|
||||||
# 讯飞 情绪分析 服务密钥
|
# 讯飞 情绪分析 服务密钥 https://www.xfyun.cn/service/emotion-analysis/
|
||||||
xf_ltp_app_id=
|
xf_ltp_app_id=
|
||||||
xf_ltp_api_key=
|
xf_ltp_api_key=
|
||||||
|
|
||||||
#NLP三选一:xfaiui、yuan、chatgpt
|
#NLP三选一:xfaiui、yuan、chatgpt
|
||||||
chat_module=xfaiui
|
chat_module=xfaiui
|
||||||
|
|
||||||
# 讯飞 自然语言处理 服务密钥(NLP3选1)
|
# 讯飞 自然语言处理 服务密钥(NLP3选1) https://aiui.xfyun.cn/solution/webapi/
|
||||||
xf_aiui_app_id=
|
xf_aiui_app_id=
|
||||||
xf_aiui_api_key=
|
xf_aiui_api_key=
|
||||||
|
|
||||||
#yuan_1_0 对话机器人 服务密钥(NLP3选1)
|
#浪.潮源大模型 服务密钥(NLP3选1) https://air.inspur.com/
|
||||||
yuan_1_0_account=
|
yuan_1_0_account=
|
||||||
yuan_1_0_phone=
|
yuan_1_0_phone=
|
||||||
|
|
||||||
#chatgpt 对话机器人 服务密钥(NLP3选1)
|
#gpt 服务密钥(NLP3选1) https://openai.com/
|
||||||
chatgpt_api_key=
|
chatgpt_api_key=
|
||||||
|
|
||||||
#ngrok.cc 内网穿透id(非必须)
|
#ngrok内网穿透id,远程设备可以通过互联网连接Fay(非必须)http://ngrok.cc
|
||||||
ngrok_cc_id=
|
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():
|
def load_config():
|
||||||
global config
|
global config
|
||||||
global system_config
|
global system_config
|
||||||
global system_chrome_driver
|
|
||||||
global key_ali_nls_key_id
|
global key_ali_nls_key_id
|
||||||
global key_ali_nls_key_secret
|
global key_ali_nls_key_secret
|
||||||
global key_ali_nls_app_key
|
global key_ali_nls_app_key
|
||||||
@ -43,7 +42,6 @@ def load_config():
|
|||||||
|
|
||||||
system_config = ConfigParser()
|
system_config = ConfigParser()
|
||||||
system_config.read('system.conf', encoding='UTF-8')
|
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_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_key_secret = system_config.get('key', 'ali_nls_key_secret')
|
||||||
key_ali_nls_app_key = system_config.get('key', 'ali_nls_app_key')
|
key_ali_nls_app_key = system_config.get('key', 'ali_nls_app_key')
|
||||||
|
Loading…
Reference in New Issue
Block a user