mirror of
https://github.com/czp3009/bilibili-api.git
synced 2026-08-13 22:43:29 +08:00
更新版本号与 README
This commit is contained in:
67
README.md
67
README.md
@@ -13,14 +13,14 @@
|
|||||||
# 添加依赖
|
# 添加依赖
|
||||||
## Gradle
|
## Gradle
|
||||||
|
|
||||||
compile group: 'com.hiczp', name: 'bilibili-api', version: '0.0.1'
|
compile group: 'com.hiczp', name: 'bilibili-api', version: '0.0.2'
|
||||||
|
|
||||||
## Maven
|
## Maven
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.hiczp</groupId>
|
<groupId>com.hiczp</groupId>
|
||||||
<artifactId>bilibili-api</artifactId>
|
<artifactId>bilibili-api</artifactId>
|
||||||
<version>0.0.1</version>
|
<version>0.0.2</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
# 名词解释
|
# 名词解释
|
||||||
@@ -83,7 +83,7 @@ LoginException 在 accessToken 错误或过期时抛出
|
|||||||
打印一个直播间的历史弹幕
|
打印一个直播间的历史弹幕
|
||||||
|
|
||||||
int roomId = 3;
|
int roomId = 3;
|
||||||
new BilibiliRESTAPI()
|
new BilibiliAPI()
|
||||||
.getLiveService()
|
.getLiveService()
|
||||||
.getHistoryBulletScreens(roomId)
|
.getHistoryBulletScreens(roomId)
|
||||||
.execute()
|
.execute()
|
||||||
@@ -105,7 +105,66 @@ API 文档
|
|||||||
|
|
||||||
## Socket
|
## Socket
|
||||||
### 获取直播间实时弹幕
|
### 获取直播间实时弹幕
|
||||||
//TODO 尚未实现
|
|
||||||
|
int roomId = 3;
|
||||||
|
LiveClient liveClient = new BilibiliAPI()
|
||||||
|
.getLiveClient(roomId)
|
||||||
|
.registerListener(new MyListener())
|
||||||
|
.connect();
|
||||||
|
|
||||||
|
.connect() 会抛出 IOException 当网络故障时.
|
||||||
|
|
||||||
|
(connect 以及 close 方法都是阻塞的)
|
||||||
|
|
||||||
|
(connect 方法运行结束只代表 socket 确实是连上了, 但是服务器还没有响应进房请求数据包)
|
||||||
|
|
||||||
|
(当服务器响应进房请求数据包时才代表真的连上了, 此时会有一个连接成功的事件, 见下文)
|
||||||
|
|
||||||
|
事件机制使用 Google Guava EventBus 实现, 监听器不需要继承任何类或者接口.
|
||||||
|
|
||||||
|
public class MyListener {
|
||||||
|
@Subscribe
|
||||||
|
public void onConnectSucceed(ConnectSucceedEvent connectSucceedEvent) {
|
||||||
|
//do something
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onConnectionClose(ConnectionCloseEvent connectionCloseEvent) {
|
||||||
|
//do something
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onDanMuMsg(DanMuMsgPackageEvent danMuMsgPackageEvent) {
|
||||||
|
DanMuMsgEntity danMuMsgEntity = danMuMsgPackageEvent.getDanMuMsgEntity();
|
||||||
|
System.out.pintf("%s: %s\n", danMuMsgEntity.getUsername(), danMuMsgEntity.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
如果持续 40 秒(心跳包为 30 秒)没有收到任何消息, 将视为掉线, 会跟服务器主动断开连接一样(这通常是发送了服务器无法读取的数据包)触发一次 ConnectionCloseEvent.
|
||||||
|
|
||||||
|
liveClient.close();
|
||||||
|
|
||||||
|
即可关闭连接.
|
||||||
|
|
||||||
|
所有的事件(有些数据包我也不知道它里面的一些值是什么含义, /record 目录下面有抓取到的 Json, 可以用来查看):
|
||||||
|
|
||||||
|
| 事件 | 抛出条件 |
|
||||||
|
| :--- | :--- |
|
||||||
|
| ActivityEventPackageEvent | 收到 ACTIVITY_EVENT 数据包 |
|
||||||
|
| ConnectionCloseEvent | 连接断开(主动或被动) |
|
||||||
|
| ConnectSucceedEvent | 进房成功 |
|
||||||
|
| DanMuMsgPackageEvent | 收到 DANMU_MSG 数据包 |
|
||||||
|
| LivePackageEvent | 收到 LIVE 数据包 |
|
||||||
|
| PreparingPackageEvent | 收到 PREPARING 数据包 |
|
||||||
|
| SendGiftPackageEvent | 收到 SEND_GIFT 数据包 |
|
||||||
|
| SysGiftPackageEvent | 收到 SYS_GIFT 数据包 |
|
||||||
|
| SysMsgPackageEvent | 收到 SYS_MSG 数据包 |
|
||||||
|
| UnknownPackageEvent | B站新增了新种类的数据包, 出现此情况请提交 issue |
|
||||||
|
| ViewerCountPackageEvent | 收到 房间人数 数据包(不是 Json) |
|
||||||
|
| WelcomeGuardPackageEvent | 收到 WELCOME_GUARD 数据包 |
|
||||||
|
| WelcomePackageEvent | 收到 WELCOME 数据包 |
|
||||||
|
|
||||||
|
事件里面可以取到解析好的 POJO, 然后可以从里面取数据, 见上面的监听器示例.
|
||||||
|
|
||||||
# 特别说明
|
# 特别说明
|
||||||
## 直播间 ID 问题
|
## 直播间 ID 问题
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
group = 'com.hiczp'
|
group = 'com.hiczp'
|
||||||
version = '0.0.1'
|
version = '0.0.2'
|
||||||
description = 'Bilibili android client API library written in Java'
|
description = 'Bilibili android client API library written in Java'
|
||||||
|
|
||||||
apply plugin: 'idea'
|
apply plugin: 'idea'
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
package com.hiczp.bilibili.api.live.socket;
|
package com.hiczp.bilibili.api.live.socket;
|
||||||
|
|
||||||
import com.google.common.eventbus.EventBus;
|
import com.google.common.eventbus.EventBus;
|
||||||
|
import com.google.common.eventbus.Subscribe;
|
||||||
import com.hiczp.bilibili.api.BilibiliServiceProvider;
|
import com.hiczp.bilibili.api.BilibiliServiceProvider;
|
||||||
import com.hiczp.bilibili.api.live.entity.LiveRoomInfoEntity;
|
import com.hiczp.bilibili.api.live.entity.LiveRoomInfoEntity;
|
||||||
import com.hiczp.bilibili.api.live.socket.codec.PackageDecoder;
|
import com.hiczp.bilibili.api.live.socket.codec.PackageDecoder;
|
||||||
import com.hiczp.bilibili.api.live.socket.codec.PackageEncoder;
|
import com.hiczp.bilibili.api.live.socket.codec.PackageEncoder;
|
||||||
|
import com.hiczp.bilibili.api.live.socket.event.ConnectionCloseEvent;
|
||||||
import com.hiczp.bilibili.api.live.socket.handler.LiveClientHandler;
|
import com.hiczp.bilibili.api.live.socket.handler.LiveClientHandler;
|
||||||
import io.netty.bootstrap.Bootstrap;
|
import io.netty.bootstrap.Bootstrap;
|
||||||
import io.netty.channel.Channel;
|
import io.netty.channel.Channel;
|
||||||
@@ -39,12 +41,18 @@ public class LiveClient implements Closeable {
|
|||||||
this.bilibiliServiceProvider = bilibiliServiceProvider;
|
this.bilibiliServiceProvider = bilibiliServiceProvider;
|
||||||
this.showRoomId = showRoomId;
|
this.showRoomId = showRoomId;
|
||||||
this.userId = 0;
|
this.userId = 0;
|
||||||
|
initEventBus();
|
||||||
}
|
}
|
||||||
|
|
||||||
public LiveClient(BilibiliServiceProvider bilibiliServiceProvider, long showRoomId, long userId) {
|
public LiveClient(BilibiliServiceProvider bilibiliServiceProvider, long showRoomId, long userId) {
|
||||||
this.bilibiliServiceProvider = bilibiliServiceProvider;
|
this.bilibiliServiceProvider = bilibiliServiceProvider;
|
||||||
this.showRoomId = showRoomId;
|
this.showRoomId = showRoomId;
|
||||||
this.userId = userId;
|
this.userId = userId;
|
||||||
|
initEventBus();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initEventBus() {
|
||||||
|
eventBus.register(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized LiveClient connect() throws IOException {
|
public synchronized LiveClient connect() throws IOException {
|
||||||
@@ -121,6 +129,11 @@ public class LiveClient implements Closeable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onConnectionClose(ConnectionCloseEvent connectionCloseEvent) {
|
||||||
|
eventLoopGroup.shutdownGracefully();
|
||||||
|
}
|
||||||
|
|
||||||
public EventBus getEventBus() {
|
public EventBus getEventBus() {
|
||||||
return eventBus;
|
return eventBus;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user