()
| 17 | public class GiveGift implements Task { |
| 18 | |
| 19 | @Override |
| 20 | public void run() { |
| 21 | try { |
| 22 | /* 从配置类中读取是否需要执行赠送礼物 */ |
| 23 | if (!Boolean.TRUE.equals(ConfigLoader.helperConfig.getTaskConfig().getGiveGift())) { |
| 24 | log.info("未开启自动送出即将过期礼物功能"); |
| 25 | return; |
| 26 | } |
| 27 | /* 直播间 id */ |
| 28 | String roomId = ""; |
| 29 | /* 直播间 uid 即 up 的 id*/ |
| 30 | String uid = ""; |
| 31 | /* B站后台时间戳为10位 */ |
| 32 | long nowTime = System.currentTimeMillis() / 1000; |
| 33 | /* 获得礼物列表 */ |
| 34 | JsonArray jsonArray = xliveGiftBagList(); |
| 35 | /* 判断是否有过期礼物出现 */ |
| 36 | boolean flag = true; |
| 37 | for (Object object : jsonArray) { |
| 38 | JsonObject json = (JsonObject) object; |
| 39 | long expireAt = Long.parseLong(json.get("expire_at").getAsString()); |
| 40 | /* 礼物还剩 1 天送出 */ |
| 41 | /* 永久礼物到期时间为 0 */ |
| 42 | if ((expireAt - nowTime) < 60 * 60 * 25 && expireAt != 0) { |
| 43 | /* 如果有未送出的礼物,则获取一个直播间 */ |
| 44 | if ("".equals(roomId)) { |
| 45 | JsonObject uidAndRid = getuidAndRid(); |
| 46 | uid = uidAndRid.get("uid").getAsString(); |
| 47 | roomId = uidAndRid.get("roomid").getAsString(); |
| 48 | } |
| 49 | |
| 50 | String requestBody = "biz_id=" + roomId |
| 51 | + "&ruid=" + uid |
| 52 | + "&bag_id=" + json.get("bag_id") |
| 53 | + "&gift_id=" + json.get("gift_id") |
| 54 | + "&gift_num=" + json.get("gift_num"); |
| 55 | JsonObject jsonObject3 = xliveBagSend(requestBody); |
| 56 | if ("0".equals(jsonObject3.get("code").getAsString())) { |
| 57 | /* 礼物的名字 */ |
| 58 | String giftName = jsonObject3.get("data").getAsJsonObject().get("gift_name").getAsString(); |
| 59 | /* 礼物的数量 */ |
| 60 | String giftNum = jsonObject3.get("data").getAsJsonObject().get("gift_num").getAsString(); |
| 61 | log.info("给直播间 - {} - {} - 数量: {}✔", roomId, giftName, giftNum); |
| 62 | flag = false; |
| 63 | } else { |
| 64 | log.warn("送礼失败, 原因 : {}❌", jsonObject3); |
| 65 | } |
| 66 | } |
| 67 | } |
| 68 | if (flag) { |
| 69 | log.info("当前无即将过期礼物❌"); |
| 70 | } |
| 71 | } catch (Exception e) { |
| 72 | log.error("💔赠送礼物异常 : ", e); |
| 73 | } |
| 74 | } |
| 75 | |
| 76 | /** |
nothing calls this directly
no test coverage detected