|
|
|
@ -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<String> shieldUserIdList = new ArrayList<>();//屏蔽回复用户id
|
|
|
|
|
static List<String> 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<DouyinCmdEnum> 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 {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 判断是否回复
|
|
|
|
|
* @param binaryFrameHandler
|
|
|
|
|
* @param msg 消息对象
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public static boolean contentIsVaild(DouyinBinaryFrameHandler binaryFrameHandler, DouyinDanmuMsg msg){
|
|
|
|
|
// msg.getContent();// 消息
|
|
|
|
|
// msg.getUid();//发送人id
|
|
|
|
|
// msg.getUsername();//发送人名称
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|