184 lines
7.3 KiB
Java
184 lines
7.3 KiB
Java
package com.yutou;
|
|
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
import com.yutou.bili.api.LiveApi;
|
|
import com.yutou.bili.api.UserApi;
|
|
import com.yutou.bili.bean.live.LiveRoomConfig;
|
|
import com.yutou.bili.bean.live.LiveRoomPlayInfo;
|
|
import com.yutou.bili.bean.login.LoginCookie;
|
|
import com.yutou.bili.bean.login.UserInfoBean;
|
|
import com.yutou.bili.enums.LiveProtocol;
|
|
import com.yutou.bili.enums.LiveVideoCodec;
|
|
import com.yutou.bili.enums.LiveVideoDefinition;
|
|
import com.yutou.bili.enums.LiveVideoFormat;
|
|
import com.yutou.bili.net.BiliLiveNetApiManager;
|
|
import com.yutou.bili.net.BiliLoginNetApiManager;
|
|
import com.yutou.bili.databases.BiliBiliLoginDatabase;
|
|
import com.yutou.bili.net.BiliUserNetApiManager;
|
|
import com.yutou.bili.net.WebSocketManager;
|
|
import com.yutou.inter.IHttpApiCheckCallback;
|
|
import com.yutou.okhttp.BaseBean;
|
|
import com.yutou.okhttp.FileCallback;
|
|
import com.yutou.okhttp.HttpCallback;
|
|
import com.yutou.okhttp.HttpLoggingInterceptor;
|
|
import jakarta.xml.bind.DatatypeConverter;
|
|
import okhttp3.Headers;
|
|
|
|
import java.io.ByteArrayOutputStream;
|
|
import java.nio.charset.StandardCharsets;
|
|
import java.util.HashMap;
|
|
|
|
public class Main {
|
|
public static void main(String[] args) {
|
|
HttpLoggingInterceptor.setLog(false);
|
|
HttpLoggingInterceptor.setLog(true);
|
|
getPlayUrl();
|
|
//testSocket();
|
|
|
|
}
|
|
|
|
|
|
public static void testSocket() {
|
|
try {
|
|
JSONObject json = new JSONObject();
|
|
json.put("roomid", "13246789");
|
|
json.put("protover", "3");
|
|
json.put("platform", "web");
|
|
json.put("type", 2);
|
|
json.put("key", "aaaabbb");
|
|
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
|
// outputStream.write(toLH(json.toString().length() + 16));
|
|
outputStream.write(new byte[]{0, 0, 1, 68, 0, 16, 0, 1, 0, 0, 0, 7, 0, 0, 0, 1});
|
|
outputStream.write(json.toJSONString().getBytes(StandardCharsets.UTF_8));
|
|
outputStream.flush();
|
|
System.out.println("\n\n\n");
|
|
String str = DatatypeConverter.printHexBinary(outputStream.toByteArray());
|
|
for (int i = 0; i < str.length(); i = i + 4) {
|
|
if (i % 32 == 0 && i != 0) {
|
|
System.out.println();
|
|
}
|
|
if (str.length() - i > 4) {
|
|
System.out.print(str.substring(i, i + 4) + " ");
|
|
} else {
|
|
System.out.println(str.substring(i));
|
|
}
|
|
}
|
|
System.out.println("\n\n\n");
|
|
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public static void getPlayUrl() {
|
|
BiliLiveNetApiManager
|
|
.getInstance()
|
|
.getApi(new IHttpApiCheckCallback<LiveApi>() {
|
|
@Override
|
|
public void onSuccess(LiveApi api) {
|
|
String roomId = "22689676";
|
|
String mid = "68057278";
|
|
|
|
// roomId="42062";
|
|
|
|
api.getLiveRoomPlayInfo(
|
|
roomId,
|
|
LiveProtocol.getAll(),
|
|
LiveVideoFormat.getAll(),
|
|
LiveVideoCodec.getAll(),
|
|
LiveVideoDefinition.ORIGINAL.getValue()
|
|
).enqueue(new HttpCallback<>() {
|
|
@Override
|
|
public void onResponse(Headers headers, int code, String status, LiveRoomPlayInfo response, String rawResponse) {
|
|
LiveRoomPlayInfo.Codec codec = response.getPlayurlInfo().getPlayurl().getStream().get(0).getFormat().get(0).getCodec().get(0);
|
|
|
|
LiveRoomConfig config = new LiveRoomConfig();
|
|
config.setUid("0");
|
|
config.setRoomId(roomId);
|
|
config.setMid(mid);
|
|
config.setLogin(false);
|
|
WebSocketManager.getInstance().addRoom(config);
|
|
|
|
/*String url = codec.getUrlInfo().get(0).getHost() + codec.getBaseUrl() + codec.getUrlInfo().get(0).getExtra();
|
|
System.out.println("下载url = " + url);
|
|
api.downloadLive(url).enqueue(new FileCallback<>(response) {
|
|
@Override
|
|
public void onStart(LiveRoomPlayInfo bean) {
|
|
System.out.println("开始下载");
|
|
}
|
|
|
|
@Override
|
|
public boolean onDownload(Headers headers, LiveRoomPlayInfo bean, long len, long total) {
|
|
System.out.println("下载中:"+len+"|"+total);
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public void onFinish(LiveRoomPlayInfo bean) {
|
|
System.out.println("下载结束");
|
|
}
|
|
|
|
@Override
|
|
public void onFailure(LiveRoomPlayInfo bean, Throwable throwable) {
|
|
System.out.println("下载失败");
|
|
}
|
|
});*/
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onFailure(Throwable throwable) {
|
|
|
|
}
|
|
});
|
|
}
|
|
|
|
@Override
|
|
public void onError(int code, String error) {
|
|
|
|
}
|
|
});
|
|
}
|
|
|
|
public static void login(String username, String password) {
|
|
BiliLoginNetApiManager.getInstance().login(new HttpCallback<LoginCookie>() {
|
|
@Override
|
|
public void onResponse(Headers headers, int code, String status, LoginCookie response, String rawResponse) {
|
|
System.out.println("headers = " + headers + ", code = " + code + ", status = " + status + ", response = " + response + ", rawResponse = " + rawResponse);
|
|
if (code == BiliLoginNetApiManager.LOGIN_SUCCESS) {
|
|
BiliBiliLoginDatabase.getInstance().initData(response).close();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onFailure(Throwable throwable) {
|
|
|
|
}
|
|
});
|
|
}
|
|
|
|
public static void getUserInfo() {
|
|
BiliUserNetApiManager.getInstance().getUserApi(new IHttpApiCheckCallback<UserApi>() {
|
|
@Override
|
|
public void onSuccess(UserApi api) {
|
|
api.getUserInfo().enqueue(new HttpCallback<UserInfoBean>() {
|
|
@Override
|
|
public void onResponse(Headers headers, int code, String status, UserInfoBean response, String rawResponse) {
|
|
System.out.println("response = " + rawResponse);
|
|
System.out.println(response);
|
|
}
|
|
|
|
@Override
|
|
public void onFailure(Throwable throwable) {
|
|
|
|
}
|
|
});
|
|
}
|
|
|
|
@Override
|
|
public void onError(int code, String error) {
|
|
System.out.println("code = " + code + ", error = " + error);
|
|
}
|
|
});
|
|
}
|
|
} |