Commit 01161ad1 by yangchen

b站数据返回修改

parent 65064349
package com.zhiwei.live.danmu.bilibili;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
......@@ -9,14 +8,11 @@ import org.apache.logging.log4j.Logger;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import com.zhiwei.common.config.GroupType;
import com.zhiwei.crawler.core.HttpBoot;
import com.zhiwei.crawler.core.RequestUtils;
import com.zhiwei.crawler.proxy.ProxyFactory;
import com.zhiwei.live.bean.RoomInfo;
import com.zhiwei.live.danmu.util.Connector;
import com.zhiwei.live.roominfo.BilibiliRoomInfoCrawler;
import com.zhiwei.tools.tools.ZhiWeiTools;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.handler.timeout.IdleStateHandler;
......@@ -30,20 +26,17 @@ public class BilibiliClient {
private static final int PORT = 2243;
public static void main(String[] args) throws InterruptedException {
String roomUrl = "https://live.bilibili.com/439";
String roomUrl = "https://live.bilibili.com/139";
String roomId = roomUrl.replaceAll("https://live.bilibili.com/", "");
try {
getDanmu(roomId);
List<BilibiliMessage> messagesList = BilibiliMessageListener.messages;
while(true) {
try {
BilibiliMessage messages = messagesList.remove(0);
System.out.println(messages);
} catch (Exception e) {
break;
}
ZhiWeiTools.sleep(50);
}
getDanmu(new DataCallBack() {
@Override
public void onData(BilibiliMessage data) {
System.out.println("-------------" + data.toString());
}
},roomId);
} catch (Exception e) {
e.printStackTrace();
}
......@@ -58,7 +51,7 @@ public class BilibiliClient {
* @param roomId
* @throws Exception
*/
public static void getDanmu(String roomId) throws Exception {
public static void getDanmu(DataCallBack dataCallBack,String roomId) throws Exception {
//根据房间号获取真实房间号
RoomInfo roomInfo = BilibiliRoomInfoCrawler.getRoomInfoByRoomId(roomId);
if(Objects.nonNull(roomInfo)) {
......@@ -75,7 +68,7 @@ public class BilibiliClient {
}
//建立弹幕连接
Connector.asynchronizedTcpConnect(new NioEventLoopGroup(), host, PORT,
new IdleStateHandler(0, 30, 0,TimeUnit.SECONDS), new BilibiliMessageHandler(roomInfo.getRoomId())).sync();
new IdleStateHandler(0, 30, 0,TimeUnit.SECONDS), new BilibiliMessageHandler(dataCallBack,roomInfo.getRoomId())).sync();
}else {
logger.info("获取真实房间号出现问题,请及时检查程序");
}
......
......@@ -23,14 +23,16 @@ public class BilibiliMessageHandler extends ChannelInboundHandlerAdapter{
private static final byte[] PING = new byte[] { 0x00, 0x00, 0x00, 0x1F, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x5B, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x5D };
private static Pattern pattern = Pattern.compile("\\{\"cmd\":\"DANMU_MSG.+?\\]\\}");
private String roomid;
private DataCallBack dataCallBack;
/**
* Constructor
*
* @param roomId
* 房间号
*/
public BilibiliMessageHandler(String roomid) {
public BilibiliMessageHandler(DataCallBack dataCallBack,String roomid) {
this.dataCallBack = dataCallBack;
this.roomid = roomid;
}
......@@ -66,7 +68,8 @@ public class BilibiliMessageHandler extends ChannelInboundHandlerAdapter{
while(matcher.find()) {
JSONObject dataJson = JSONObject.parseObject(matcher.group());
BilibiliMessage bilibiliMessage = new BilibiliMessage(dataJson);
System.out.println(bilibiliMessage);
dataCallBack.onData(bilibiliMessage);
// System.out.println(bilibiliMessage);
}
}
ReferenceCountUtil.release(msg);
......
package com.zhiwei.live.danmu.bilibili;
public interface DataCallBack {
/**
* 当有输入传入调度
*
* @param data
* @param attr
* @return void
*/
void onData(BilibiliMessage data);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment