This commit is contained in:
2024-11-02 18:24:16 +08:00
parent 579fd2eaf6
commit 51f961b054
18 changed files with 298 additions and 96 deletions

View File

@@ -0,0 +1,55 @@
package com.yutou.biliapi.bean.live.database;
import com.alibaba.fastjson2.annotation.JSONField;
import com.yutou.biliapi.bean.websocket.live.WSGuardBuy;
import com.yutou.common.databases.AbsDatabasesBean;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class LiveGuardBuyBean extends AbsDatabasesBean {
@JSONField(name = "uid")
private String uid;
@JSONField(name = "username")
private String username;
@JSONField(name = "guard_level")
private long guardLevel;
@JSONField(name = "num")
private long num;
@JSONField(name = "price")
private long price;
@JSONField(name = "gift_id")
private long giftID;
@JSONField(name = "gift_name")
private String giftName;
@JSONField(name = "start_time")
private long startTime;
@JSONField(name = "end_time")
private long endTime;
public LiveGuardBuyBean() {
super("guardBuy", System.currentTimeMillis());
}
public LiveGuardBuyBean(WSGuardBuy guard) {
super("guardBuy", System.currentTimeMillis());
this.uid = guard.getUid();
this.username = guard.getUsername();
this.guardLevel = guard.getGuardLevel();
this.num = guard.getNum();
this.price = guard.getPrice();
this.giftID = guard.getGiftID();
this.giftName = guard.getGiftName();
this.startTime = guard.getStartTime();
this.endTime = guard.getEndTime();
}
}

View File

@@ -14,7 +14,7 @@ public class LiveSuperChatDatabaseBean extends AbsDatabasesBean {
@JSONField(name = "price")
private long price;
@JSONField(name = "uid")
private long uid;
private String uid;
@JSONField(name = "start_time")
private long start_time;
@JSONField(name = "end_time")
@@ -25,6 +25,10 @@ public class LiveSuperChatDatabaseBean extends AbsDatabasesBean {
private String message_trans;
@JSONField(name = "message_font_color")
private String message_font_color;
@JSONField(name ="user_name")
private String userName;
@JSONField(name ="user_avatar")
private String userAvatar;
public LiveSuperChatDatabaseBean() {
super("superChat",System.currentTimeMillis());

View File

@@ -38,6 +38,7 @@ public class WSData implements Serializable, ISqlDatabaseBean {
case "SEND_GIFT" -> new WSSendGift(json);
case "INTERACT_WORD" -> new WSInteractWord(json);
case "GUARD_BUY" -> new WSGuardBuy(json);
case "SUPER_CHAT_MESSAGE" -> new WSSuperChatMessage(json);
default -> new WSData(json);
};
}

View File

@@ -12,7 +12,7 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class WSGuardBuy extends WSData{
private long uid;
private String uid;
private String username;
private long guardLevel;
private long num;
@@ -30,7 +30,7 @@ public class WSGuardBuy extends WSData{
public WSGuardBuy(JSONObject json) {
super(json);
JSONObject data = json.getJSONObject("data");
uid = data.getLong("uid");
uid = data.getString("uid");
username = data.getString("username");
guardLevel = data.getLong("guard_level");
num = data.getLong("num");

View File

@@ -14,21 +14,33 @@ import lombok.EqualsAndHashCode;
public class WSSuperChatMessage extends WSData{
private long price;
private long rate;
private long uid;
private String uid;
private long start_time;
private long end_time;
private String message;
private String message_trans;
private String message_font_color;
private WSMedalInfo medal_info;
private String userName;
private String userAvatar;
public static void main(String[] args) {
JSONObject json=JSONObject.parseObject("{\"cmd\":\"SUPER_CHAT_MESSAGE\",\"data\":{\"background_bottom_color\":\"#2A60B2\",\"background_color\":\"#EDF5FF\",\"background_color_end\":\"#405D85\",\"background_color_start\":\"#3171D2\",\"background_icon\":\"\",\"background_image\":\"\",\"background_price_color\":\"#7497CD\",\"color_point\":0.7,\"dmscore\":616,\"end_time\":1724997230,\"gift\":{\"gift_id\":12000,\"gift_name\":\"醒目留言\",\"num\":1},\"group_medal\":{\"is_lighted\":0,\"medal_id\":0,\"name\":\"\"},\"id\":10427329,\"is_mystery\":false,\"is_ranked\":0,\"is_send_audit\":1,\"medal_info\":{\"anchor_roomid\":81004,\"anchor_uname\":\"艾尔莎_Channel\",\"guard_level\":0,\"icon_id\":0,\"is_lighted\":1,\"medal_color\":\"#1a544b\",\"medal_color_border\":1725515,\"medal_color_end\":5414290,\"medal_color_start\":1725515,\"medal_level\":21,\"medal_name\":\"艾薯条\",\"special\":\"\",\"target_id\":1521415},\"message\":\"莎莎,想安利你个植物大战僵尸的改版叫植物大战僵尸:肉鸽,具体情况私信你了,辛苦了\",\"message_font_color\":\"#A3F6FF\",\"message_trans\":\"サーシャ、あなたのPlantsvs.Zombiesの改版をPlantsvs.Zombiesと言いたい肉鳩、具体的な状況は私的にあなたを信じて、お疲れ様でした\",\"price\":30,\"rate\":1000,\"start_time\":1724997170,\"time\":60,\"token\":\"9925C118\",\"trans_mark\":0,\"ts\":1724997170,\"uid\":100002175,\"uinfo\":{\"base\":{\"face\":\"https://i1.hdslb.com/bfs/face/b5ec3b1f7025b5546225ae0f36941d55ddef405b.jpg\",\"is_mystery\":false,\"name\":\"中吴同学\",\"name_color\":0,\"name_color_str\":\"#666666\",\"official_info\":{\"desc\":\"\",\"role\":0,\"title\":\"\",\"type\":-1},\"origin_info\":{\"face\":\"https://i1.hdslb.com/bfs/face/b5ec3b1f7025b5546225ae0f36941d55ddef405b.jpg\",\"name\":\"中吴同学\"}},\"guard\":{\"expired_str\":\"\",\"level\":0},\"medal\":{\"color\":1725515,\"color_border\":1725515,\"color_end\":5414290,\"color_start\":1725515,\"guard_icon\":\"\",\"guard_level\":0,\"honor_icon\":\"\",\"id\":0,\"is_light\":1,\"level\":21,\"name\":\"艾薯条\",\"ruid\":1521415,\"score\":50001980,\"typ\":0,\"user_receive_count\":0,\"v2_medal_color_border\":\"#5FC7F4FF\",\"v2_medal_color_end\":\"#43B3E3CC\",\"v2_medal_color_level\":\"#00308C99\",\"v2_medal_color_start\":\"#43B3E3CC\",\"v2_medal_color_text\":\"#FFFFFFFF\"},\"title\":{\"old_title_css_id\":\"\",\"title_css_id\":\"\"},\"uid\":100002175},\"user_info\":{\"face\":\"https://i1.hdslb.com/bfs/face/b5ec3b1f7025b5546225ae0f36941d55ddef405b.jpg\",\"face_frame\":\"\",\"guard_level\":0,\"is_main_vip\":1,\"is_svip\":0,\"is_vip\":0,\"level_color\":\"#5896de\",\"manager\":0,\"name_color\":\"#666666\",\"title\":\"\",\"uname\":\"中吴同学\",\"user_level\":25}},\"is_report\":true,\"msg_id\":\"19106780029655552:1000:1000\",\"p_is_ack\":true,\"p_msg_type\":1,\"send_time\":1724997170767}");
JSONObject json=JSONObject.parseObject("{\"cmd\":\"SUPER_CHAT_MESSAGE\",\"data\":{\"background_bottom_color\":\"#E2B52B\",\"background_color\":\"#FFF1C5\",\"background_color_end\":\"#EEBE5C\",\"background_color_start\":\"#EAB400\",\"background_icon\":\"\",\"background_image\":\"\",\"background_price_color\":\"#ECCF75\",\"color_point\":0.7,\"dmscore\":714,\"end_time\":1730462758,\"gift\":{\"gift_id\":12000,\"gift_name\":\"醒目留言\",\"num\":1},\"group_medal\":{\"is_lighted\":0,\"medal_id\":0,\"name\":\"\"},\"id\":10855278,\"is_mystery\":false,\"is_ranked\":0,\"is_send_audit\":0,\"medal_info\":{\"anchor_roomid\":5265,\"anchor_uname\":\"Liyuu_\",\"guard_level\":3,\"icon_id\":0,\"is_lighted\":1,\"medal_color\":\"#06154c\",\"medal_color_border\":6809855,\"medal_color_end\":6850801,\"medal_color_start\":398668,\"medal_level\":25,\"medal_name\":\"水溅跃\",\"special\":\"\",\"target_id\":4549624},\"message\":\"芋泥泥最近在哪发财呢\",\"message_font_color\":\"#72110E\",\"message_trans\":\"\",\"price\":100,\"rate\":1000,\"start_time\":1730462458,\"time\":300,\"token\":\"D6F223DA\",\"trans_mark\":0,\"ts\":1730462458,\"uid\":19970343,\"uinfo\":{\"base\":{\"face\":\"https://i0.hdslb.com/bfs/face/e3b35f66d631f740770b2b64bd3bcc1e66322717.jpg\",\"is_mystery\":false,\"name\":\"蘭梅蛋糕\",\"name_color\":0,\"name_color_str\":\"#00D1F1\",\"official_info\":{\"desc\":\"\",\"role\":0,\"title\":\"\",\"type\":-1},\"origin_info\":{\"face\":\"https://i0.hdslb.com/bfs/face/e3b35f66d631f740770b2b64bd3bcc1e66322717.jpg\",\"name\":\"蘭梅蛋糕\"}},\"guard\":{\"expired_str\":\"2024-11-01 23:59:59\",\"level\":3},\"medal\":{\"color\":398668,\"color_border\":6809855,\"color_end\":6850801,\"color_start\":398668,\"guard_icon\":\"https://i0.hdslb.com/bfs/live/143f5ec3003b4080d1b5f817a9efdca46d631945.png\",\"guard_level\":3,\"honor_icon\":\"\",\"id\":0,\"is_light\":1,\"level\":25,\"name\":\"水溅跃\",\"ruid\":4549624,\"score\":50020367,\"typ\":0,\"user_receive_count\":0,\"v2_medal_color_border\":\"#58A1F8FF\",\"v2_medal_color_end\":\"#4775EFCC\",\"v2_medal_color_level\":\"#000B7099\",\"v2_medal_color_start\":\"#4775EFCC\",\"v2_medal_color_text\":\"#FFFFFFFF\"},\"title\":{\"old_title_css_id\":\"title-153-1\",\"title_css_id\":\"title-153-1\"},\"uid\":19970343},\"user_info\":{\"face\":\"https://i0.hdslb.com/bfs/face/e3b35f66d631f740770b2b64bd3bcc1e66322717.jpg\",\"face_frame\":\"https://i0.hdslb.com/bfs/live/80f732943cc3367029df65e267960d56736a82ee.png\",\"guard_level\":3,\"is_main_vip\":0,\"is_svip\":0,\"is_vip\":0,\"level_color\":\"#61c05a\",\"manager\":0,\"name_color\":\"#00D1F1\",\"title\":\"title-153-1\",\"uname\":\"蘭梅蛋糕\",\"user_level\":15}},\"is_report\":true,\"msg_id\":\"21972164819290113:1000:1000\",\"p_is_ack\":true,\"p_msg_type\":1,\"send_time\":1730462458528}");
WSSuperChatMessage message=new WSSuperChatMessage(json);
Log.i(message);
}
public WSSuperChatMessage(JSONObject json) {
super(json);
JSONObject data=json.getJSONObject("data");
setPrice(data.getLongValue("price"));
setRate(data.getLongValue("rate"));
setUid(data.getString("uid"));
setStart_time(data.getLongValue("start_time"));
setEnd_time(getStart_time()+(data.getIntValue("time")));
setMessage(data.getString("message"));
setMessage_trans(data.getString("message_trans"));
setMessage_font_color(data.getString("message_font_color"));
setUserName(data.getJSONObject("user_info").getString("uname"));
setUserAvatar(data.getJSONObject("user_info").getString("face"));
}
}

View File

@@ -9,6 +9,7 @@ import com.yutou.common.databases.AbsDatabasesBean;
import com.yutou.common.databases.SQLiteManager;
import com.yutou.common.okhttp.HttpDownloadUtils;
import com.yutou.common.utils.Log;
import lombok.Getter;
import org.apache.poi.ss.usermodel.DataFormat;
import java.io.File;
@@ -91,6 +92,8 @@ public class BiliLiveDatabase extends SQLiteManager {
add(new LiveGiftDatabaseBean((WSSendGift) bean));
} else if (bean instanceof WSSuperChatMessage) {
add(new LiveSuperChatDatabaseBean((WSSuperChatMessage) bean));
} else if (bean instanceof WSGuardBuy) {
add(new LiveGuardBuyBean((WSGuardBuy) bean));
}
}
@@ -135,9 +138,17 @@ public class BiliLiveDatabase extends SQLiteManager {
}
public static void main(String[] args) {
/* List<LiveDanmuDatabaseBean> list = getInstance().get(-1, 1727515148800L, LiveDanmuDatabaseBean.class);
for (LiveDanmuDatabaseBean bean : list) {
Log.i(bean.getSql_time() + "|" + bean);
}*/
BiliLiveDatabase biliLiveDatabase = new BiliLiveDatabase(LiveRoomConfig.buildConfig("5265"));
List<AbsDatabasesBean> list = List.of(
new LiveInfoDatabaseBean(),
new LiveDanmuDatabaseBean(),
new LiveGiftDatabaseBean(),
new LiveInteractWordDatabaseBean(),
new LiveSuperChatDatabaseBean()
);
for (AbsDatabasesBean item : list) {
biliLiveDatabase.clearTable(item.getTableName());
}
}
}