init
This commit is contained in:
154
src/main/java/com/yutou/bilibili/Tools/ApplicationInit.java
Normal file
154
src/main/java/com/yutou/bilibili/Tools/ApplicationInit.java
Normal file
@@ -0,0 +1,154 @@
|
||||
package com.yutou.bilibili.Tools;
|
||||
|
||||
import com.yutou.bilibili.BiliBili.Datas.LiveData;
|
||||
import com.yutou.bilibili.BiliBili.Live;
|
||||
import com.yutou.bilibili.BiliBili.LiveUtils;
|
||||
import com.yutou.bilibili.BiliBili.Services.IBiliBiliLiveService;
|
||||
import com.yutou.bilibili.mybatis.Bili.mybatis.model.BilibiliLiveInfo;
|
||||
import com.yutou.bilibili.mybatis.Bili.mybatis.model.BilibiliUpInfo;
|
||||
import org.springframework.boot.ApplicationArguments;
|
||||
import org.springframework.boot.ApplicationRunner;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.File;
|
||||
import java.text.ParsePosition;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
/**
|
||||
* 服务启动后执行
|
||||
*/
|
||||
@Component
|
||||
public class ApplicationInit implements ApplicationRunner {
|
||||
@Resource
|
||||
IBiliBiliLiveService service;
|
||||
private Timer timer;
|
||||
|
||||
|
||||
@Override
|
||||
public void run(ApplicationArguments args) throws Exception {
|
||||
LiveUtils.LiveGiftConfig.getInstance();
|
||||
List<BilibiliUpInfo> list = service.getUpInfo();
|
||||
for (BilibiliUpInfo data : list) {
|
||||
if (data.getEnable() == 1) {
|
||||
try {
|
||||
Live live = new Live();
|
||||
live.add(data.getRoomid(), !StringUtils.isEmpty(AppTools.readFile(new File("cookies.json"))));
|
||||
live.start();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
startTimer();
|
||||
}
|
||||
|
||||
private void startTimer() {
|
||||
if (timer == null) {
|
||||
timer = new Timer();
|
||||
timer.schedule(new TimerTask() {
|
||||
String oldTime = "";
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
Date date = new Date();
|
||||
String time = new SimpleDateFormat("HH:mm").format(date);
|
||||
checkLive();
|
||||
if (time.equals(oldTime)) {
|
||||
return;
|
||||
}
|
||||
oldTime = time;
|
||||
switch (time) {
|
||||
case "00:00":
|
||||
for (Live live : Live.lives) {
|
||||
live.clearInfo();
|
||||
}
|
||||
break;
|
||||
case "01:00":
|
||||
case "02:00":
|
||||
case "03:00":
|
||||
case "04:00":
|
||||
case "05:00":
|
||||
case "06:00":
|
||||
case "07:00":
|
||||
case "08:00":
|
||||
case "09:00":
|
||||
case "10:00":
|
||||
case "11:00":
|
||||
case "12:00":
|
||||
case "13:00":
|
||||
case "14:00":
|
||||
case "15:00":
|
||||
case "16:00":
|
||||
case "17:00":
|
||||
case "18:00":
|
||||
case "19:00":
|
||||
case "20:00":
|
||||
case "21:00":
|
||||
case "22:00":
|
||||
case "23:00":
|
||||
case "23:59":
|
||||
saveData(time);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void checkLive() {
|
||||
for (BilibiliUpInfo info : service.getUpInfo()) {
|
||||
if (info.getOfflinelistening() == 1) {
|
||||
if (info.getLive() == 1) {
|
||||
Live live = LiveUtils.liveContains(info);
|
||||
if (live == null) {
|
||||
try {
|
||||
live = new Live();
|
||||
live.add(info.getRoomid(), !StringUtils.isEmpty(AppTools.readFile(new File("cookies.json"))));
|
||||
live.start();
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 0, 60 * 1000);
|
||||
}
|
||||
}
|
||||
|
||||
public void saveData(String time) {
|
||||
Date date = new Date();
|
||||
String toDay = AppTools.getToDayTime() + " 00:00:00";
|
||||
String nowTime = AppTools.getToDayTime() + " " + time + ":00";
|
||||
for (BilibiliUpInfo info : service.getUpInfo()) {
|
||||
Date startTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(toDay, new ParsePosition(0));
|
||||
Date endTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(nowTime, new ParsePosition(0));
|
||||
int userCount = service.queryLiveData(info.getRoomid(), startTime, endTime, new String[]{LiveData.INTERACT_WORD}).size();
|
||||
int vipCount = service.queryLiveData(info.getRoomid(), startTime, endTime, new String[]{LiveData.ENTRY_EFFECT}).size();
|
||||
int giftCount = service.queryLiveData(info.getRoomid(), startTime, endTime, new String[]{
|
||||
LiveData.SEND_GIFT,
|
||||
LiveData.COMBO_SEND,
|
||||
LiveData.GUARD_BUY,
|
||||
LiveData.SUPER_CHAT_MESSAGE}).size();
|
||||
Live live = LiveUtils.liveContains(info);
|
||||
int popularCount = 0;
|
||||
if (live != null) {
|
||||
popularCount = live.getInfo().getPopular();
|
||||
}
|
||||
BilibiliLiveInfo liveInfo = new BilibiliLiveInfo();
|
||||
liveInfo.setRoomid(info.getRoomid());
|
||||
liveInfo.setGiftuser(giftCount);
|
||||
liveInfo.setUserindex(userCount);
|
||||
liveInfo.setVipuserindex(vipCount);
|
||||
liveInfo.setPopular(popularCount);
|
||||
liveInfo.setSubtime(date);
|
||||
service.addLiveInfo(liveInfo);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user