package tech.ordinaryroad.live.chat.client.douyin.client; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; 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.douyin.config.DouyinLiveChatClientConfig; import tech.ordinaryroad.live.chat.client.douyin.constant.DouyinCmdEnum; import tech.ordinaryroad.live.chat.client.douyin.listener.IDouyinMsgListener; import tech.ordinaryroad.live.chat.client.douyin.msg.DouyinDanmuMsg; import tech.ordinaryroad.live.chat.client.douyin.msg.DouyinEnterRoomMsg; import tech.ordinaryroad.live.chat.client.douyin.msg.DouyinGiftMsg; import tech.ordinaryroad.live.chat.client.douyin.msg.DouyinLikeMsg; import tech.ordinaryroad.live.chat.client.douyin.netty.handler.DouyinBinaryFrameHandler; /** * @author mjz * @date 2024/1/2 */ @Slf4j class DouyinLiveChatClientTest { static Object lock = new Object(); DouyinLiveChatClient client; @Test void example() throws InterruptedException { String cookie = System.getenv("cookie"); log.error("cookie: {}", cookie); DouyinLiveChatClientConfig config = DouyinLiveChatClientConfig.builder() // TODO 浏览器Cookie .cookie(cookie) .roomId("renyixu1989") .roomId("567789235524") .roomId("166163409118") .roomId("722266687616") .roomId("o333") .roomId("qilongmusic") .roomId("yimei20210922") .build(); client = new DouyinLiveChatClient(config, new IDouyinMsgListener() { @Override public void onMsg(IMsg msg) { // log.debug("收到{}消息 {}", msg.getClass(), msg); } @Override public void onCmdMsg(DouyinCmdEnum cmd, ICmdMsg cmdMsg) { // log.debug("收到CMD消息{} {}", cmd, cmdMsg); } @Override public void onOtherCmdMsg(DouyinCmdEnum cmd, ICmdMsg cmdMsg) { log.debug("收到其他CMD消息 {}", cmd); } @Override public void onUnknownCmd(String cmdString, IMsg msg) { log.debug("收到未知CMD消息 {}", cmdString); } @Override public void onDanmuMsg(DouyinBinaryFrameHandler binaryFrameHandler, DouyinDanmuMsg msg) { log.info("{} 收到弹幕 {} {}({}):{}", binaryFrameHandler.getRoomId(), msg.getBadgeLevel() != 0 ? msg.getBadgeLevel() + msg.getBadgeName() : "", msg.getUsername(), msg.getUid(), msg.getContent()); } @Override public void onGiftMsg(DouyinBinaryFrameHandler binaryFrameHandler, DouyinGiftMsg msg) { log.info("{} 收到礼物 {} {}({}) {} {}({})x{}({})", binaryFrameHandler.getRoomId(), msg.getBadgeLevel() != 0 ? msg.getBadgeLevel() + msg.getBadgeName() : "", msg.getUsername(), msg.getUid(), "赠送", msg.getGiftName(), msg.getGiftId(), msg.getGiftCount(), msg.getGiftPrice()); } @Override public void onLikeMsg(DouyinBinaryFrameHandler binaryFrameHandler, DouyinLikeMsg msg) { log.info("{} 收到点赞 [{}] {}({})", binaryFrameHandler.getRoomId(), msg.getBadgeLevel() != 0 ? msg.getBadgeLevel() + msg.getBadgeName() : "", msg.getUsername(), msg.getUid()); } @Override public void onEnterRoomMsg(DouyinBinaryFrameHandler binaryFrameHandler, DouyinEnterRoomMsg msg) { log.info("{} {}({}) 进入直播间", msg.getBadgeLevel() != 0 ? msg.getBadgeLevel() + msg.getBadgeName() : "", msg.getUsername(), msg.getUid()); } }); client.connect(); // 防止测试时直接退出 while (true) { synchronized (lock) { lock.wait(); } } } }