From d8e4968044a3b684e2c33a25c8f3fac9f5c57ca9 Mon Sep 17 00:00:00 2001
From: zhouwentao <1577701412@qq.com>
Date: Tue, 11 Jun 2024 15:30:49 +0800
Subject: [PATCH] =?UTF-8?q?=E8=AF=B7=E6=B1=82API=E7=9A=84=E7=B1=BB?=
=?UTF-8?q?=E6=96=87=E4=BB=B6=E6=96=B9=E6=B3=95=20tech.ordinaryroad.live.c?=
=?UTF-8?q?hat.client.commons.util.AiChatUtil.class=20a-bogus.js=E6=96=87?=
=?UTF-8?q?=E4=BB=B6=E6=94=B9=E4=B8=BA=E4=BB=8E=E9=A1=B9=E7=9B=AE=E6=A8=A1?=
=?UTF-8?q?=E5=9D=97=E4=B8=8Bresources=E7=9B=AE=E5=BD=95=E8=8E=B7=E5=8F=96?=
=?UTF-8?q?=20tech.ordinaryroad.live.chat.client.douyin.clientDouyinLiveCh?=
=?UTF-8?q?atClientTest.class=20=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../live-chat-client-codec-douyin/pom.xml | 4 ++
.../client/codec/douyin/api/DouyinApis.java | 3 +-
.../chat/client/commons/util/AiChatUtil.java | 69 +++++++++++++++++++
.../live-chat-client-douyin/pom.xml | 6 ++
.../client/DouyinLiveChatClientTest.java | 62 +++++++++++++----
5 files changed, 128 insertions(+), 16 deletions(-)
create mode 100644 live-chat-client-commons/live-chat-client-commons-util/src/main/java/tech/ordinaryroad/live/chat/client/commons/util/AiChatUtil.java
diff --git a/live-chat-client-codec/live-chat-client-codec-douyin/pom.xml b/live-chat-client-codec/live-chat-client-codec-douyin/pom.xml
index fee2282..ccf13e8 100644
--- a/live-chat-client-codec/live-chat-client-codec-douyin/pom.xml
+++ b/live-chat-client-codec/live-chat-client-codec-douyin/pom.xml
@@ -94,5 +94,9 @@
4.5.1
models
+
+ com.google.protobuf
+ protobuf-java
+
diff --git a/live-chat-client-codec/live-chat-client-codec-douyin/src/main/java/tech/ordinaryroad/live/chat/client/codec/douyin/api/DouyinApis.java b/live-chat-client-codec/live-chat-client-codec-douyin/src/main/java/tech/ordinaryroad/live/chat/client/codec/douyin/api/DouyinApis.java
index d6e99dc..388518d 100644
--- a/live-chat-client-codec/live-chat-client-codec-douyin/src/main/java/tech/ordinaryroad/live/chat/client/codec/douyin/api/DouyinApis.java
+++ b/live-chat-client-codec/live-chat-client-codec-douyin/src/main/java/tech/ordinaryroad/live/chat/client/codec/douyin/api/DouyinApis.java
@@ -235,7 +235,8 @@ public class DouyinApis {
String a_bogus="";
Context context = Context.newBuilder("js").allowAllAccess(true).build();
try {
- File jsFile = new File("D:\\workspace\\ordinaryroad-live-chat-client\\live-chat-client-codec\\live-chat-client-codec-douyin\\src\\main\\resources\\a-bogus.js");
+ String bogus_path = DouyinApis.class.getClassLoader().getResource("a-bogus.js").getPath();
+ File jsFile = new File(bogus_path);
String jsCode = new String(Files.readAllBytes(jsFile.toPath()));
Source source = Source.newBuilder("js", jsCode, "a-bogus1.js").build();
context.eval(source);
diff --git a/live-chat-client-commons/live-chat-client-commons-util/src/main/java/tech/ordinaryroad/live/chat/client/commons/util/AiChatUtil.java b/live-chat-client-commons/live-chat-client-commons-util/src/main/java/tech/ordinaryroad/live/chat/client/commons/util/AiChatUtil.java
new file mode 100644
index 0000000..8a35be4
--- /dev/null
+++ b/live-chat-client-commons/live-chat-client-commons-util/src/main/java/tech/ordinaryroad/live/chat/client/commons/util/AiChatUtil.java
@@ -0,0 +1,69 @@
+package tech.ordinaryroad.live.chat.client.commons.util;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.http.*;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+
+import java.util.HashMap;
+
+/**
+ * fast AI 调用工具
+ * @author ZhouWenTao
+ * @create 2024-06-11-12:11
+ */
+
+public class AiChatUtil {
+ // 问答api地址
+ private static final String CHAT_COMPLETIONS_URL = "http://ai.izcsz.com/api/v1/chat/completions";
+ // 请求token
+ private static final String authorization = "Bearer fastgpt-MBOxnysyhuzMMuLijtq1qYQa6dwIo6AsB0lR5L2r5ommMhBrRd0g9OKNwx4E6";
+ //请求API时固定的Header
+ private static final HashMap headerMap = new HashMap<>();
+
+ static {
+ // 固定请求TOKEN
+ headerMap.put("Authorization", authorization);
+ }
+ /**
+ * 调用 问答API接口
+ * @param content
+ */
+ public static String chatCompletions(String content) {
+ String contentType = "application/json";
+ String data = "{\"chatId\":\"abcd\",\"stream\":false,\"detail\":false,\"variables\":{\"nick\":\"亮亮\"},\"messages\":[{\"content\":\""+content+"\",\"role\":\"user\"}]}";
+ return HttpRequest.post(CHAT_COMPLETIONS_URL)
+ .addHeaders(headerMap)
+ .header("Content-Type", contentType)
+ .body(data) //接收String类型数据
+ .timeout(60000)
+ .execute()
+ .body();
+ }
+
+ /**
+ * 转换问答api返回数据中格式化出message文本
+ * @param completionsJsonStr
+ * @return
+ */
+ public static String formatCompletionOutContent(String completionsJsonStr){
+ try {
+ if (null !=completionsJsonStr && !completionsJsonStr.isEmpty()) {
+ JSONObject responseBody = new JSONObject(completionsJsonStr);
+ JSONArray choices = responseBody.getJSONArray("choices");// 获取ai返回的内容,这里获取第一条
+ if (!CollectionUtil.isEmpty(choices)) {
+ JSONObject choicesItem = choices.getJSONObject(0);
+ return choicesItem.getJSONObject("message").getStr("content");
+ }
+ }
+ }catch (Exception e){
+ System.out.println("ERROR-转换问答接口message时出错:"+e.getMessage());
+ }
+ return null;
+ }
+
+
+ public static void main(String[] args) {
+ System.out.println(formatCompletionOutContent(chatCompletions("用java写一个冒泡排序")));
+ }
+}
diff --git a/live-chat-clients/live-chat-client-douyin/pom.xml b/live-chat-clients/live-chat-client-douyin/pom.xml
index b3fe074..dd2faf7 100644
--- a/live-chat-clients/live-chat-client-douyin/pom.xml
+++ b/live-chat-clients/live-chat-client-douyin/pom.xml
@@ -32,5 +32,11 @@
${junit-jupiter.version}
test
+
+ junit
+ junit
+ RELEASE
+ test
+
diff --git a/live-chat-clients/live-chat-client-douyin/src/test/java/tech/ordinaryroad/live/chat/client/douyin/client/DouyinLiveChatClientTest.java b/live-chat-clients/live-chat-client-douyin/src/test/java/tech/ordinaryroad/live/chat/client/douyin/client/DouyinLiveChatClientTest.java
index 7ddac04..0df3c01 100644
--- a/live-chat-clients/live-chat-client-douyin/src/test/java/tech/ordinaryroad/live/chat/client/douyin/client/DouyinLiveChatClientTest.java
+++ b/live-chat-clients/live-chat-client-douyin/src/test/java/tech/ordinaryroad/live/chat/client/douyin/client/DouyinLiveChatClientTest.java
@@ -1,13 +1,12 @@
package tech.ordinaryroad.live.chat.client.douyin.client;
-import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.json.JSONObject;
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.google.protobuf.UnknownFieldSet;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
import org.junit.jupiter.api.Test;
-import org.junit.platform.commons.util.StringUtils;
import tech.ordinaryroad.live.chat.client.codec.douyin.constant.DouyinCmdEnum;
import tech.ordinaryroad.live.chat.client.codec.douyin.msg.*;
import tech.ordinaryroad.live.chat.client.codec.douyin.protobuf.DouyinCmdMsgOuterClass;
@@ -15,11 +14,13 @@ import tech.ordinaryroad.live.chat.client.codec.douyin.protobuf.DouyinWebcastGif
import tech.ordinaryroad.live.chat.client.codec.douyin.protobuf.DouyinWebcastSocialMessageMsgOuterClass;
import tech.ordinaryroad.live.chat.client.commons.base.msg.ICmdMsg;
import tech.ordinaryroad.live.chat.client.commons.base.msg.IMsg;
-import tech.ordinaryroad.live.chat.client.commons.client.enums.ClientStatusEnums;
+import tech.ordinaryroad.live.chat.client.commons.util.AiChatUtil;
import tech.ordinaryroad.live.chat.client.douyin.config.DouyinLiveChatClientConfig;
import tech.ordinaryroad.live.chat.client.douyin.listener.IDouyinMsgListener;
import tech.ordinaryroad.live.chat.client.douyin.netty.handler.DouyinBinaryFrameHandler;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
/**
@@ -31,29 +32,41 @@ class DouyinLiveChatClientTest {
static Object lock = new Object();
DouyinLiveChatClient client;
+ static List shieldUserIdList = new ArrayList<>();//屏蔽回复用户id
+ static List shieldNickNameList = new ArrayList<>();//屏蔽回复用户昵称
+
+ static {
+ ///根据用户id或昵称屏蔽回复
+ //屏蔽用户id
+ shieldUserIdList.add("3844369757514799");
+ //屏幕用户名
+ shieldNickNameList.add("李李李林");
+ }
@Test
void example() throws InterruptedException {
// String cookie = System.getenv("cookie");
- String cookie ="ttwid=1%7CU6YHr6wKj_WHHXYfelzk5jc7uAg-yN0k2k4yTm1Uo-s%7C1704965821%7Cf48a7874351c69357f4f5f531416c9ad43385f9059fe7c57a5bbb9732b5f5add; store-region-src=uid; live_use_vvc=%22false%22; xgplayer_user_id=657157399276; passport_csrf_token=8be74ec699ab18095dca4f5702e616f9; passport_csrf_token_default=8be74ec699ab18095dca4f5702e616f9; bd_ticket_guard_client_web_domain=2; _bd_ticket_crypt_doamin=2; __security_server_data_status=1; my_rd=2; publish_badge_show_info=%220%2C0%2C0%2C1715773185377%22; FORCE_LOGIN=%7B%22videoConsumedRemainSeconds%22%3A180%2C%22isForcePopClose%22%3A1%7D; SEARCH_RESULT_LIST_TYPE=%22single%22; LOGIN_STATUS=1; store-region=cn-sx; __live_version__=%221.1.2.250%22; FOLLOW_RED_POINT_INFO=%221%22; volume_info=%7B%22isUserMute%22%3Atrue%2C%22isMute%22%3Atrue%2C%22volume%22%3A0.056%7D; download_guide=%223%2F20240521%2F0%22; strategyABtestKey=%221716342956.58%22; csrf_session_id=c0e8a5e872a6f46fc9f680d648d0506c; has_avx2=null; device_web_cpu_core=12; device_web_memory_size=8; webcast_leading_last_show_time=1716342967261; webcast_leading_total_show_times=1; webcast_local_quality=ld; pwa2=%220%7C0%7C3%7C1%22; passport_assist_user=Cjy-XOyHP7UxqDjMY8EgqDg7y2ZTQwU-2n9VwZmWY7NOzNfIE7h_mGo82Qvin4tjMegXNQANqLuGpjIPSjwaSgo8UMXwBgvpWS-UfZRncpUt1NP79vbsJy0575r3PH_q0PCdKEODEZIUEYLsFsltD9oMKEm6uBgmi8CgQ2P3EP_60Q0Yia_WVCABIgEDzHu1Lw%3D%3D; n_mh=Bj7_B8aFG8fIBbINj1-kLTnQ9S9DDEx44d6T3t5Xhl8; sso_uid_tt=4e9a67ef7a1f34439805b9545a64c499; sso_uid_tt_ss=4e9a67ef7a1f34439805b9545a64c499; toutiao_sso_user=82307b656b07f2e1a4cf91e5d8da0006; toutiao_sso_user_ss=82307b656b07f2e1a4cf91e5d8da0006; sid_ucp_sso_v1=1.0.0-KDc3NzM2ZTJjZjVmNTUxNmIxOGQ2YTcwYzQzYzU4ZDY3ODE5MTdlNWQKHQjNzOCXhAIQx9e2sgYY7zEgDDCKwIzOBTgGQPQHGgJscSIgODIzMDdiNjU2YjA3ZjJlMWE0Y2Y5MWU1ZDhkYTAwMDY; ssid_ucp_sso_v1=1.0.0-KDc3NzM2ZTJjZjVmNTUxNmIxOGQ2YTcwYzQzYzU4ZDY3ODE5MTdlNWQKHQjNzOCXhAIQx9e2sgYY7zEgDDCKwIzOBTgGQPQHGgJscSIgODIzMDdiNjU2YjA3ZjJlMWE0Y2Y5MWU1ZDhkYTAwMDY; passport_auth_status=eb9c3dbcb1c9737616664cadf1d8a790%2Cfba0b2a35313b10a9e2e6c5d8f4d0f5f; passport_auth_status_ss=eb9c3dbcb1c9737616664cadf1d8a790%2Cfba0b2a35313b10a9e2e6c5d8f4d0f5f; uid_tt=4c60bce2af32bb3fc83bce53bdd3e567; uid_tt_ss=4c60bce2af32bb3fc83bce53bdd3e567; sid_tt=a9af6fcd917a75ddd5d8bdb6d8c44496; sessionid=a9af6fcd917a75ddd5d8bdb6d8c44496; sessionid_ss=a9af6fcd917a75ddd5d8bdb6d8c44496; _bd_ticket_crypt_cookie=b745f8fd1c572267484fbfe58b89c925; sid_guard=a9af6fcd917a75ddd5d8bdb6d8c44496%7C1716366286%7C5183996%7CSun%2C+21-Jul-2024+08%3A24%3A42+GMT; sid_ucp_v1=1.0.0-KDFmMzRhNjk3NDg4OGMyNGQxZTk3ZmNhZjcwNmYzN2JlZDNkMjJkNmYKGQjNzOCXhAIQzte2sgYY7zEgDDgGQPQHSAQaAmhsIiBhOWFmNmZjZDkxN2E3NWRkZDVkOGJkYjZkOGM0NDQ5Ng; ssid_ucp_v1=1.0.0-KDFmMzRhNjk3NDg4OGMyNGQxZTk3ZmNhZjcwNmYzN2JlZDNkMjJkNmYKGQjNzOCXhAIQzte2sgYY7zEgDDgGQPQHSAQaAmhsIiBhOWFmNmZjZDkxN2E3NWRkZDVkOGJkYjZkOGM0NDQ5Ng; __ac_signature=_02B4Z6wo00f01GnsMRQAAIDBY8rqvlBzsRhpzDWAAHw-eb; FOLLOW_LIVE_POINT_INFO=%22MS4wLjABAAAAfAS7FbtmU-rQ7alBP_D6bJBIWX27xHGXI0bVcHoisis%2F1716393600000%2F0%2F0%2F1716370567576%22; stream_player_status_params=%22%7B%5C%22is_auto_play%5C%22%3A0%2C%5C%22is_full_screen%5C%22%3A0%2C%5C%22is_full_webscreen%5C%22%3A0%2C%5C%22is_mute%5C%22%3A1%2C%5C%22is_speed%5C%22%3A1%2C%5C%22is_visible%5C%22%3A1%7D%22; WallpaperGuide=%7B%22showTime%22%3A1716188223721%2C%22closeTime%22%3A0%2C%22showCount%22%3A2%2C%22cursor1%22%3A87%2C%22cursor2%22%3A0%2C%22hoverTime%22%3A1716352032390%7D; __ac_nonce=0664dbd4e00c752141901; stream_recommend_feed_params=%22%7B%5C%22cookie_enabled%5C%22%3Atrue%2C%5C%22screen_width%5C%22%3A1920%2C%5C%22screen_height%5C%22%3A1080%2C%5C%22browser_online%5C%22%3Atrue%2C%5C%22cpu_core_num%5C%22%3A12%2C%5C%22device_memory%5C%22%3A8%2C%5C%22downlink%5C%22%3A10%2C%5C%22effective_type%5C%22%3A%5C%224g%5C%22%2C%5C%22round_trip_time%5C%22%3A150%7D%22; FOLLOW_NUMBER_YELLOW_POINT_INFO=%22MS4wLjABAAAAfAS7FbtmU-rQ7alBP_D6bJBIWX27xHGXI0bVcHoisis%2F1716393600000%2F1716369970156%2F0%2F1716372013022%22; FRIEND_NUMBER_RED_POINT_INFO=%22MS4wLjABAAAAfAS7FbtmU-rQ7alBP_D6bJBIWX27xHGXI0bVcHoisis%2F1716393600000%2F1716370815219%2F0%2F0%22; passport_fe_beating_status=true; home_can_add_dy_2_desktop=%221%22; xg_device_score=7.740503633714868; live_can_add_dy_2_desktop=%221%22; IsDouyinActive=true; bd_ticket_guard_client_data=eyJiZC10aWNrZXQtZ3VhcmQtdmVyc2lvbiI6MiwiYmQtdGlja2V0LWd1YXJkLWl0ZXJhdGlvbi12ZXJzaW9uIjoxLCJiZC10aWNrZXQtZ3VhcmQtcmVlLXB1YmxpYy1rZXkiOiJCR1NCbXBuQWhMRFg3TERDUVZqZnRDSHJXa1FTNzZNR1ZPcDI4YXB1WmhTd3B0YnArM1NKRCt1b2lZTFFacENDS2JaMEZkaFZUcEtyei9sU0ZzNTlWNUk9IiwiYmQtdGlja2V0LWd1YXJkLXdlYi12ZXJzaW9uIjoxfQ%3D%3D; odin_tt=5cb1890563132950efc6a30651b7131a6421e8423d05672245eecc5f5c052cd9122f6a6314b1a40c1ac0bb1eeb70a9df50bcfee6bde0eee4a5e5dbc2b6516455; msToken=0x6ze9kt9qdjqmsf_mqiXzhZKT4cP3vD1AxZuFg6AQJy6LhFHm5R_Fzq_KtFkuAX9iDg2OJypnqfKSuv95TG7T1oGzcaHkGXLJLG7WAqAg2rQdM9DXA=";
+ //String cookie ="ttwid=1%7CU6YHr6wKj_WHHXYfelzk5jc7uAg-yN0k2k4yTm1Uo-s%7C1704965821%7Cf48a7874351c69357f4f5f531416c9ad43385f9059fe7c57a5bbb9732b5f5add; store-region-src=uid; live_use_vvc=%22false%22; xgplayer_user_id=657157399276; passport_csrf_token=8be74ec699ab18095dca4f5702e616f9; passport_csrf_token_default=8be74ec699ab18095dca4f5702e616f9; bd_ticket_guard_client_web_domain=2; _bd_ticket_crypt_doamin=2; __security_server_data_status=1; my_rd=2; publish_badge_show_info=%220%2C0%2C0%2C1715773185377%22; FORCE_LOGIN=%7B%22videoConsumedRemainSeconds%22%3A180%2C%22isForcePopClose%22%3A1%7D; SEARCH_RESULT_LIST_TYPE=%22single%22; LOGIN_STATUS=1; store-region=cn-sx; __live_version__=%221.1.2.250%22; FOLLOW_RED_POINT_INFO=%221%22; volume_info=%7B%22isUserMute%22%3Atrue%2C%22isMute%22%3Atrue%2C%22volume%22%3A0.056%7D; download_guide=%223%2F20240521%2F0%22; strategyABtestKey=%221716342956.58%22; csrf_session_id=c0e8a5e872a6f46fc9f680d648d0506c; has_avx2=null; device_web_cpu_core=12; device_web_memory_size=8; webcast_leading_last_show_time=1716342967261; webcast_leading_total_show_times=1; webcast_local_quality=ld; pwa2=%220%7C0%7C3%7C1%22; passport_assist_user=Cjy-XOyHP7UxqDjMY8EgqDg7y2ZTQwU-2n9VwZmWY7NOzNfIE7h_mGo82Qvin4tjMegXNQANqLuGpjIPSjwaSgo8UMXwBgvpWS-UfZRncpUt1NP79vbsJy0575r3PH_q0PCdKEODEZIUEYLsFsltD9oMKEm6uBgmi8CgQ2P3EP_60Q0Yia_WVCABIgEDzHu1Lw%3D%3D; n_mh=Bj7_B8aFG8fIBbINj1-kLTnQ9S9DDEx44d6T3t5Xhl8; sso_uid_tt=4e9a67ef7a1f34439805b9545a64c499; sso_uid_tt_ss=4e9a67ef7a1f34439805b9545a64c499; toutiao_sso_user=82307b656b07f2e1a4cf91e5d8da0006; toutiao_sso_user_ss=82307b656b07f2e1a4cf91e5d8da0006; sid_ucp_sso_v1=1.0.0-KDc3NzM2ZTJjZjVmNTUxNmIxOGQ2YTcwYzQzYzU4ZDY3ODE5MTdlNWQKHQjNzOCXhAIQx9e2sgYY7zEgDDCKwIzOBTgGQPQHGgJscSIgODIzMDdiNjU2YjA3ZjJlMWE0Y2Y5MWU1ZDhkYTAwMDY; ssid_ucp_sso_v1=1.0.0-KDc3NzM2ZTJjZjVmNTUxNmIxOGQ2YTcwYzQzYzU4ZDY3ODE5MTdlNWQKHQjNzOCXhAIQx9e2sgYY7zEgDDCKwIzOBTgGQPQHGgJscSIgODIzMDdiNjU2YjA3ZjJlMWE0Y2Y5MWU1ZDhkYTAwMDY; passport_auth_status=eb9c3dbcb1c9737616664cadf1d8a790%2Cfba0b2a35313b10a9e2e6c5d8f4d0f5f; passport_auth_status_ss=eb9c3dbcb1c9737616664cadf1d8a790%2Cfba0b2a35313b10a9e2e6c5d8f4d0f5f; uid_tt=4c60bce2af32bb3fc83bce53bdd3e567; uid_tt_ss=4c60bce2af32bb3fc83bce53bdd3e567; sid_tt=a9af6fcd917a75ddd5d8bdb6d8c44496; sessionid=a9af6fcd917a75ddd5d8bdb6d8c44496; sessionid_ss=a9af6fcd917a75ddd5d8bdb6d8c44496; _bd_ticket_crypt_cookie=b745f8fd1c572267484fbfe58b89c925; sid_guard=a9af6fcd917a75ddd5d8bdb6d8c44496%7C1716366286%7C5183996%7CSun%2C+21-Jul-2024+08%3A24%3A42+GMT; sid_ucp_v1=1.0.0-KDFmMzRhNjk3NDg4OGMyNGQxZTk3ZmNhZjcwNmYzN2JlZDNkMjJkNmYKGQjNzOCXhAIQzte2sgYY7zEgDDgGQPQHSAQaAmhsIiBhOWFmNmZjZDkxN2E3NWRkZDVkOGJkYjZkOGM0NDQ5Ng; ssid_ucp_v1=1.0.0-KDFmMzRhNjk3NDg4OGMyNGQxZTk3ZmNhZjcwNmYzN2JlZDNkMjJkNmYKGQjNzOCXhAIQzte2sgYY7zEgDDgGQPQHSAQaAmhsIiBhOWFmNmZjZDkxN2E3NWRkZDVkOGJkYjZkOGM0NDQ5Ng; __ac_signature=_02B4Z6wo00f01GnsMRQAAIDBY8rqvlBzsRhpzDWAAHw-eb; FOLLOW_LIVE_POINT_INFO=%22MS4wLjABAAAAfAS7FbtmU-rQ7alBP_D6bJBIWX27xHGXI0bVcHoisis%2F1716393600000%2F0%2F0%2F1716370567576%22; stream_player_status_params=%22%7B%5C%22is_auto_play%5C%22%3A0%2C%5C%22is_full_screen%5C%22%3A0%2C%5C%22is_full_webscreen%5C%22%3A0%2C%5C%22is_mute%5C%22%3A1%2C%5C%22is_speed%5C%22%3A1%2C%5C%22is_visible%5C%22%3A1%7D%22; WallpaperGuide=%7B%22showTime%22%3A1716188223721%2C%22closeTime%22%3A0%2C%22showCount%22%3A2%2C%22cursor1%22%3A87%2C%22cursor2%22%3A0%2C%22hoverTime%22%3A1716352032390%7D; __ac_nonce=0664dbd4e00c752141901; stream_recommend_feed_params=%22%7B%5C%22cookie_enabled%5C%22%3Atrue%2C%5C%22screen_width%5C%22%3A1920%2C%5C%22screen_height%5C%22%3A1080%2C%5C%22browser_online%5C%22%3Atrue%2C%5C%22cpu_core_num%5C%22%3A12%2C%5C%22device_memory%5C%22%3A8%2C%5C%22downlink%5C%22%3A10%2C%5C%22effective_type%5C%22%3A%5C%224g%5C%22%2C%5C%22round_trip_time%5C%22%3A150%7D%22; FOLLOW_NUMBER_YELLOW_POINT_INFO=%22MS4wLjABAAAAfAS7FbtmU-rQ7alBP_D6bJBIWX27xHGXI0bVcHoisis%2F1716393600000%2F1716369970156%2F0%2F1716372013022%22; FRIEND_NUMBER_RED_POINT_INFO=%22MS4wLjABAAAAfAS7FbtmU-rQ7alBP_D6bJBIWX27xHGXI0bVcHoisis%2F1716393600000%2F1716370815219%2F0%2F0%22; passport_fe_beating_status=true; home_can_add_dy_2_desktop=%221%22; xg_device_score=7.740503633714868; live_can_add_dy_2_desktop=%221%22; IsDouyinActive=true; bd_ticket_guard_client_data=eyJiZC10aWNrZXQtZ3VhcmQtdmVyc2lvbiI6MiwiYmQtdGlja2V0LWd1YXJkLWl0ZXJhdGlvbi12ZXJzaW9uIjoxLCJiZC10aWNrZXQtZ3VhcmQtcmVlLXB1YmxpYy1rZXkiOiJCR1NCbXBuQWhMRFg3TERDUVZqZnRDSHJXa1FTNzZNR1ZPcDI4YXB1WmhTd3B0YnArM1NKRCt1b2lZTFFacENDS2JaMEZkaFZUcEtyei9sU0ZzNTlWNUk9IiwiYmQtdGlja2V0LWd1YXJkLXdlYi12ZXJzaW9uIjoxfQ%3D%3D; odin_tt=5cb1890563132950efc6a30651b7131a6421e8423d05672245eecc5f5c052cd9122f6a6314b1a40c1ac0bb1eeb70a9df50bcfee6bde0eee4a5e5dbc2b6516455; msToken=0x6ze9kt9qdjqmsf_mqiXzhZKT4cP3vD1AxZuFg6AQJy6LhFHm5R_Fzq_KtFkuAX9iDg2OJypnqfKSuv95TG7T1oGzcaHkGXLJLG7WAqAg2rQdM9DXA=";
+ String roomId = "47678148825";
+ String cookie = "bd_ticket_guard_client_web_domain=2; passport_csrf_token=7ffb8b8fa7a1755db97fe36c23b2b4e6; passport_csrf_token_default=7ffb8b8fa7a1755db97fe36c23b2b4e6; SEARCH_RESULT_LIST_TYPE=%22single%22; strategyABtestKey=%221718075897.038%22; FORCE_LOGIN=%7B%22videoConsumedRemainSeconds%22%3A180%7D; csrf_session_id=436cc9216870e18f303417c5bcae5f70; passport_assist_user=CkEd-hBNPxDPo8jSy2_SAQ1QyuMpdEF7KSknM9STv3pitdhOdoiS-q2jTP-OSkAKU1irJAsU6KvT7u-TabgCliye3xpKCjz_QBK83x7ywBVzEnfGwAfV4gdN0GteGVFmuYK2AO37BFM38PWx5kVG_mG14ngdnkHeYJfT5Y7y5r-f-0EQ99rTDRiJr9ZUIAEiAQO_x4an; n_mh=fo-jpdvR_LTh0xqGcSh8zbW8MJO9YTly2kmcGDTTduI; sso_uid_tt=1893916d9a25805c3d40ce1b12e2bdf1; sso_uid_tt_ss=1893916d9a25805c3d40ce1b12e2bdf1; toutiao_sso_user=60c0a0cb4d91d28583b0e652110b6538; toutiao_sso_user_ss=60c0a0cb4d91d28583b0e652110b6538; sid_ucp_sso_v1=1.0.0-KDdjZWNkYzI4YzM0YWRkY2EzYWI0MGQ2MzhmNzllZjk3YzllMDdhMDcKIQiv2KCu8Y3qBhCihJ-zBhjvMSAMMLy5xY8GOAZA9AdIBhoCaGwiIDYwYzBhMGNiNGQ5MWQyODU4M2IwZTY1MjExMGI2NTM4; ssid_ucp_sso_v1=1.0.0-KDdjZWNkYzI4YzM0YWRkY2EzYWI0MGQ2MzhmNzllZjk3YzllMDdhMDcKIQiv2KCu8Y3qBhCihJ-zBhjvMSAMMLy5xY8GOAZA9AdIBhoCaGwiIDYwYzBhMGNiNGQ5MWQyODU4M2IwZTY1MjExMGI2NTM4; passport_auth_status=29fb05d66937a448685d372f7b302fb7%2C; passport_auth_status_ss=29fb05d66937a448685d372f7b302fb7%2C; uid_tt=72b4a9f97b9a58124c6d08f2b8c3ae1c; uid_tt_ss=72b4a9f97b9a58124c6d08f2b8c3ae1c; sid_tt=b73b11fd75784ffb396ccc54a5c697e8; sessionid=b73b11fd75784ffb396ccc54a5c697e8; sessionid_ss=b73b11fd75784ffb396ccc54a5c697e8; _bd_ticket_crypt_doamin=2; _bd_ticket_crypt_cookie=3fa3243ffc5678ffdaf08bc794f5c46d; publish_badge_show_info=%220%2C0%2C0%2C1718075943142%22; __security_server_data_status=1; sid_guard=b73b11fd75784ffb396ccc54a5c697e8%7C1718075944%7C5183997%7CSat%2C+10-Aug-2024+03%3A19%3A01+GMT; sid_ucp_v1=1.0.0-KDk1NDU3ZjEwNmQxYzFhZTc0ZTZhN2MyNGNhOTY3MWIyNjE5YWVmMzEKGwiv2KCu8Y3qBhCohJ-zBhjvMSAMOAZA9AdIBBoCbGYiIGI3M2IxMWZkNzU3ODRmZmIzOTZjY2M1NGE1YzY5N2U4; ssid_ucp_v1=1.0.0-KDk1NDU3ZjEwNmQxYzFhZTc0ZTZhN2MyNGNhOTY3MWIyNjE5YWVmMzEKGwiv2KCu8Y3qBhCohJ-zBhjvMSAMOAZA9AdIBBoCbGYiIGI3M2IxMWZkNzU3ODRmZmIzOTZjY2M1NGE1YzY5N2U4; store-region=cn-ha; store-region-src=uid; stream_recommend_feed_params=%22%7B%5C%22cookie_enabled%5C%22%3Atrue%2C%5C%22screen_width%5C%22%3A1920%2C%5C%22screen_height%5C%22%3A1200%2C%5C%22browser_online%5C%22%3Atrue%2C%5C%22cpu_core_num%5C%22%3A16%2C%5C%22device_memory%5C%22%3A8%2C%5C%22downlink%5C%22%3A0.8%2C%5C%22effective_type%5C%22%3A%5C%223g%5C%22%2C%5C%22round_trip_time%5C%22%3A350%7D%22; stream_player_status_params=%22%7B%5C%22is_auto_play%5C%22%3A0%2C%5C%22is_full_screen%5C%22%3A0%2C%5C%22is_full_webscreen%5C%22%3A0%2C%5C%22is_mute%5C%22%3A1%2C%5C%22is_speed%5C%22%3A1%2C%5C%22is_visible%5C%22%3A1%7D%22; FOLLOW_NUMBER_YELLOW_POINT_INFO=%22MS4wLjABAAAA6sMxlhLaCL7s471LL4qiDjsqkYVwIWnA0TvZyIa0qLTPDeYexK39ZK4aWu39ZIHC%2F1718121600000%2F0%2F0%2F1718079328944%22; FOLLOW_LIVE_POINT_INFO=%22MS4wLjABAAAA6sMxlhLaCL7s471LL4qiDjsqkYVwIWnA0TvZyIa0qLTPDeYexK39ZK4aWu39ZIHC%2F1718121600000%2F0%2F0%2F1718078730788%22; home_can_add_dy_2_desktop=%221%22; __live_version__=%221.1.2.904%22; has_avx2=null; device_web_cpu_core=16; device_web_memory_size=8; live_use_vvc=%22false%22; xgplayer_user_id=325174987665; webcast_leading_last_show_time=1718078142087; webcast_leading_total_show_times=1; volume_info=%7B%22isUserMute%22%3Afalse%2C%22isMute%22%3Afalse%2C%22volume%22%3A0.692%7D; s_v_web_id=verify_lx9ve7bp_imO5HGZ3_FTzG_4eKu_9a5B_4uHjzsrNWqeB; ttwid=1%7Cfc9BJdwMDsA_y7BGSOBm5HEMsU8iIYjtH1OeyeRQWeY%7C1718078190%7C31b06363200bf25f027bdaf5002f5398cb884c640bf726193533fcf1b06ce369; msToken=qjXhncxguu-6sjwZTmWH9goaeN-GqUsk8pDt5Szj5D5jS0gWIuhmkB9LSwTJvhNlknGsYlgsXa0EgkhMZ7V7Wz2cVCeN4URZ0YpbmggVojDFYwozCT-daytn9VfqcA==; webcast_local_quality=origin; download_guide=%223%2F20240611%2F1%22; __ac_nonce=06667f0c2003149662ac0; __ac_signature=_02B4Z6wo00f01nZfMzgAAIDDqiasj8YFk6p2fzeAAPv.12; pwa2=%220%7C0%7C3%7C0%22; odin_tt=ce1a94f911cc3c6e5f9e3904a9cb66cacaca373d6e28858f28e2b435062d8cf245955f328cab76b4d15482208883d0fa; xg_device_score=7.682148328545583; live_can_add_dy_2_desktop=%221%22; bd_ticket_guard_client_data=eyJiZC10aWNrZXQtZ3VhcmQtdmVyc2lvbiI6MiwiYmQtdGlja2V0LWd1YXJkLWl0ZXJhdGlvbi12ZXJzaW9uIjoxLCJiZC10aWNrZXQtZ3VhcmQtcmVlLXB1YmxpYy1rZXkiOiJCTi9RN3Vja0VYZ0Ftc25VaXJFbi9uZU5ReWoyeXIwZkc3RFNSQWIzbEtzY1ZPNW12WWVSeHZYZ1RPaFlEdjdrOThqWnBPN1JYN2p0ZFQ4SHpZSHVsV1k9IiwiYmQtdGlja2V0LWd1YXJkLXdlYi12ZXJzaW9uIjoxfQ%3D%3D; msToken=hlmI9OS584NY4tSI33AgKnI4lWR3_SU_5mYKOHpzFFeWoAbHHdQ9FUHcKOq3IdC5z-owRJeKsGblTQK3ArSx7Rty9iXaefee0haY5osTcCrSRVnzfqll; passport_fe_beating_status=true; IsDouyinActive=false";
log.error("cookie: {}", cookie);
DouyinLiveChatClientConfig config = DouyinLiveChatClientConfig.builder()
// .forwardWebsocketUri("ws://127.0.0.1:8080/websocket")
// TODO 浏览器Cookie
.cookie(cookie)
- .roomId("380874233822")
+ .roomId(roomId)
.build();
client = new DouyinLiveChatClient(config, new IDouyinMsgListener() {
@Override
public void onMsg(IMsg msg) {
- // log.debug("收到{}消息 {}", msg.getClass(), msg);
+ log.debug("收到{}消息 {}", msg.getClass(), msg);
}
@Override
public void onCmdMsg(DouyinCmdEnum cmd, ICmdMsg cmdMsg) {
- // log.debug("收到CMD消息{} {}", cmd, cmdMsg);
+ log.debug("收到CMD消息{} {}", cmd, cmdMsg);
}
@Override
@@ -121,13 +134,19 @@ class DouyinLiveChatClientTest {
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
-// String jianyi = jsonObject.getStr("回答建议");
-// if(StringUtils.isNotBlank(jianyi)){
- client.sendDanmu("腿好看", () -> {
- log.warn("弹幕发送成功");
- });
-// }
-// }
+ //TODO 接受到的用户消息,判断是否需要回复
+ String content = msg.getContent();
+ //先判断 该消息是否需要回复
+ if (contentIsVaild(binaryFrameHandler,msg) && !(shieldUserIdList.contains(msg.getUid())) && !(shieldNickNameList.contains(msg.getUsername()))) {
+ //调用chat 获取回答消息
+ String replyMessage = AiChatUtil.formatCompletionOutContent(AiChatUtil.chatCompletions(content));
+ if(StringUtils.isNotBlank(replyMessage)){
+ //发送
+ client.sendDanmu(replyMessage, () -> {
+ log.warn("弹幕发送成功");
+ });
+ }
+ }
}
@Override
@@ -199,4 +218,17 @@ class DouyinLiveChatClientTest {
}
}
-}
\ No newline at end of file
+ /**
+ * 判断是否回复
+ * @param binaryFrameHandler
+ * @param msg 消息对象
+ * @return
+ */
+ public static boolean contentIsVaild(DouyinBinaryFrameHandler binaryFrameHandler, DouyinDanmuMsg msg){
+// msg.getContent();// 消息
+// msg.getUid();//发送人id
+// msg.getUsername();//发送人名称
+ return true;
+ }
+
+}